Re: Порядок захвата mutex'ов.

From
Anton Petrusevich ()
To
All ()
Date
2003-05-29T19:44:10Z
Area
RU.UNIX.PROG
From: Anton Petrusevich <casus@att-ltd.biz>

mitrohin a.s. wrote:

> вот и вы на ступили на те же грабли что и я ;)))

неправда, я наступил на соседние :)

> нельзя пользоваться cond без вспомогательной переменной

Можно. У меня состояние треда само по себе переменная.

> 
> thread 1                      thread 2
> -------------------------------------------------------------------
> cond_broadcast()            cond_wait()
> 
> broadcast пришел до того как первый поток сел на cond_wait()
> и естественно этот broadcast не получил ;))

Ну неправда. Я же описал ситуацию. Мы сели в вэйт, когда просто некому было
больше взять задание -- все заняты. На самом деле у меня был не вэйт, а
таймед вэйт, с лимитом в 10 секунд. За эти 10 секунд довольно много народа
перешло в состояние ожидания, я точно знаю :) но никто не разбудил
раздатчика. Когда раздатчик просыплся по таймауту было уже с десяток
свободных тредов.

> и для thread2() фиолетово где cond_broadcast(), внутри блока lock-unlock
> или нет...

Согласен, фиолетово. Главное, чтобы был лок/анлок вообще. И переменная как
таковая не нужна, по крайней мере в моём случае.
-- 
Anton Petrusevich
--- ifmail v.2.15
 * Origin: ATT Ltd (2:5004/1@fidonet)