nptl SIGCONT и планирование streamов

Я пытаюсь перенести код, который полагается на SIGCONT, чтобы остановить определенные streamи приложения. С текущей реализацией linux nptl кажется, что в ядрах 2.6.x нельзя полагаться. Я пытаюсь разработать метод остановки других streamов. В настоящее время я могу только думать о мьютексах и переменных условий. Любые намеки приветствуются.

    Если вы полагаетесь на остановку и возобновление других streamов, то ваше приложение в конечном итоге потерпит неудачу.

    Это связано с тем, что вы не можете гарантировать, что вы не собираетесь останавливать stream, пока он имеет мьютекс, который защищает общий ресурс. Это приведет к тупиковой ситуации, так как любые другие streamи (возможно, включая тот, который остановил первый stream), который затем должен ждать мьютекс, будут ждать вечно.

    Я уверен, что это возможно, но также, вы делаете это неправильно.


    NB: такие мьютексы, вероятно, существуют в частях библиотеки C, даже если у вас их нет в вашем собственном коде. Если у вас их нет в вашем собственном коде, и это нетривиально, я был бы удивлен.

    Как вы отправляете сигналы в целевой stream? Если вы используете pthread_kill() для отправки SIGSTOP / SIGCONT в один stream, он должен работать.