|
|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Max Khon 2:5000/79 04 Feb 2004 21:53:18 To : dmitry@atlantis.dp.ua Subject : УЙОИТПОЙЪБГЙС. -------------------------------------------------------------------------------- 04 Feb 04 12:04, you wrote to All: >> по приходу сигнала ставить sig_atomic_t переменную в 1, в цикле ее >> отслеживать? d> Hасколько я понимаю, если, например, на C написать постановку d> элемента в хвост очереди так: d> /* Link at the end of list */ d> tp->next=NULL; d> if (queuehead) queuetail->next = tp; d> else queuehead = tp; d> queuetail = tp; d> то никакими дополнительными переменными и их проверками невозможно d> гарантировать, что сигнал не "пролезет" между модификациями указателей d> головы и хвоста очереди. IMHO единставенное правильное решение - d> блокировать доставку этого сигнала при помощи sigprocmask, затем d> сделать с очередью все, что нужно, и затем деблокировать доставку d> сигнала вторым вызовом sigprocmask. это все не нужно. см. пример который Lev Walkin привел. /fjoe --- GoldED+/BSD 1.1.5 * Origin: SO I KILL CHILDREN! (2:5000/79) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/18634021077d.html, оценка из 5, голосов 10
|