Реализовать функциональность второй лабораторной работы, используя в качестве транспортного уровня механизм анонимных каналов (anonymous pipes).
Рабочие потоки создаются с помощью класса thread.
Значение дескриптора канала передаётся в консоль как унаследованный объект ядра и получается в консоли с помощью функции GetStdHandle.
Начиная с этой работы, снимается требование самостоятельного чтения сообщений каждым рабочим потоком.
Для упрощения перехода к следующим лабораторным от использования событий для взаимодействия сервера и клиента можно избавиться (потребует создания двух анонимных каналов).
Требование подтверждения всех действий сохраняется.
код должен быть основан на основе 2й работы , вторая работа основывается на первой