Цитата(Kirill_Good @ Jun 25 2013, 17:31)

... Где же место пользовательскому коду здесь?)...
Вы не вчитывались в мой первый ответ.
"будет всё левак. самое грамотное - в сторонней библиотеке должна быть функция старта-останова стороннего потока. всё остальное - хождение по тонкому льду. шаг влево или вправо (не обязательно вы и не обязательно в ближайшем будущем) и кирдык всей конструкции."
т.е. делать останов _не_ своей ветки = есть зло. Так понятней? Вы не можете гарантировать, не зная внутреннего устройства ветки, что она тормознётся _корректно_ !!! Т.е. если вы затачиваетесь на внутреннюю логику поведения библиотеки при том или ином Вашем внешнем воздействии - то это чревато в будущем(как минимум). Т.е. при незначительном изменении кода самой библиотеки, Вы рискуете опять начать всё сначала (разведку, перепрограммирования своего кода вызова-останова, тестирование).
если идёт речь о не понимании как это сделать _внутри_ библиотеки - то это попытка второго моего ответа. Т.е. внутри библиотеки, должно быть обеспечено на фазе старта:
1) вход
2) захват общих ресурсов, если есть. подготовка к старту нитки.
3) подъём нитки.
4) ожидание до окончания синхронной фазы подъёма (!!! эту фазу многие пропускают. чревато проблемами при ударных нагрузках на систему в целом).
5) обработка ошибок
6) выход.
При этом внутри подымаемой нитки код будет приблизительно следующий
1) вход
2) захват локальных (ведомых данной ниткой) ресурсов
3) обработка ошибок
4) сигнализация паренту о готовности к работе, либо ошибке.
5) уход на ожидание события либо саму работу.
---
6) бла-бла-бла (работа типа)
----
7) ожидание начала останова нитки из вне.
8) освобождение своих локально захваченных ресурсов.
9) обработка ошибок
10) сигнализация об успешном окончании нитки, либо ошибке
11) выход.
с 1 по 5 пункты зеркальны к пунктам с 7 по 11. Т.е. если Вы в нитке частично завхатили ресурсы, то и на выходе Вы должны освободить только захваченные ресурсы.
код останова будет выглядеть приблизительно следующим.
1) вход
2) выставили сигнальчик нитке об останове.
3) ожидание останова нитки.
4) освобождение общих ресурсов, если есть
5) обработка ошибок
6) выход
Для обеспечения постоянного мониторинга связи парент-чайлд применяют не блокирующие функции ввода-вывода. Обычно у чайлда всю работу делают квантованной и обрабатывают порциями. При этом обычно выделяется основной цикл, внутри которого обрабатывают в том числе и сигналы приходящие от парента.