Всем привет, вот такой у меня вопрос: есть два потока, главный и подчинённый, главный назначает задачу подчинённому таким образом: в очередь задач (о подробностях её реализации говорить не буду) записывает действие, потом разблокирует мьютекс и подчинённый поток прочитает задачу в очереди и начнёт её выполнение. Существует 3 варианта событий: 1) Случится событие из за которого главный должен будет немедленно пришлёпнуть подчинённого например отмена операции). Здесь соответствующая команда посылается (через очередь) подчинённому потоку и он сам принимает решение о завершении, в случае если он при этом зависает или слишком долго завершает себя главный поток просто его убивает. 2) Задача выполняется до конца, после чего подчинённый поток информирует (через очередь) о завершении задачи и главный поток блокирует через мьютекс подчинённый до появления новых задач. 3) в потоке возникла ошибка (исключение) о чём посылается запрос ( через очередь) и главный процесс принимает решение ( выполнить задачу заново, перезапустить поток, и тд.). Во первых прошу оценить такое общение между потоками через некую защищённую область обладающую допустим методами addMessage, getmessage. Во вторых во время выполнения задачи я не могу с помощью мьютекса блочить главный процесс так как в случае ошибки в подчинённом он зависнет навсегда и к тому же он должен прослушать сообщения из других каналов, ну так вот, чтобы он не жрал слишком много ресурсов и в тоже время выполнял свою функцию я использую usleep(10*1000) или sleep(10) так как приложение взаимодействует с пользователем то это нормальный «пинг». Так вот, мне тут пришла в голову мысль что это не самый нормальный способ усмирять аппетит главного потока скажем так, Что вы думаете о такой схеме взаимодействия?
P.S. Извиняюсь за много букв :)