Прекращение потоков изящно в ACE - PullRequest
1 голос
/ 01 мая 2010

У меня есть вопрос, похожий на Этот . Но я хочу реализовать это в Linux, используя инфраструктуру ACE. Как это сделать

1 Ответ

3 голосов
/ 11 мая 2010

Немного больше информации поможет получить лучший ответ:

  • Ваши рабочие потоки ожидают других событий перед запуском?
  • Как ваши темы общаются друг с другом?
  • У вас всегда будет возможность завершить изящно, или вы ожидаете принудительного завершения некоторых потоков?

Другой вопрос , который вы упомянули, сделал очень хорошую мысль:

Как правило, способ завершения потока - просто возврат из функции, которая определяет поток. Как правило, основной поток сигнализирует рабочему потоку о выходе, используя объект события или просто целочисленное или логическое значение. Если рабочий поток ожидает в WaitForSingleObject, вам может потребоваться изменить его на WaitForMultipleObjects, где один из объектов является событием. Основной поток вызовет SetEvent, а рабочий поток проснется и вернется.

В зависимости от того, что вы настроили в ACE, вы можете использовать межпроцессное взаимодействие между вашим основным потоком и вашими рабочими потоками, чтобы дать им команду прекратить, которую они примут и обработают при следующей проверке событий. В качестве альтернативы вы можете использовать Linux * select.

Надеюсь, это направит вас в правильном направлении.

...