|
|
|
Групповой или "общинный" mutex в Windows
|
|||
|---|---|---|---|
|
#18+
Возможно ли сделать так, например при такой схеме: Несколько потоков "читателей" имеют как бы общий mutex, т.е не дожидаются друг друга, и дожидаются только освобождения мютекса "писателем", а писатель дожидается последнего "читателя". тут как я понимаю, может возникнуть ситуация такая, что писатель вообще перестанет получать доступ ресурсам, но теоретически я думаю может быть лимит группового доступа после которого очередной "читатель" не получает приоритета и встает в общую очередь. Может быть решение на поверхности, но я его не знаю) То что "читателей" несколько с этим тоже ничего не поделаешь) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2015, 02:53 |
|
||
|
Групповой или "общинный" mutex в Windows
|
|||
|---|---|---|---|
|
#18+
Сделать возможно. Никаких препятствий нет. Но вместо простых мютексов лучше использовать немножко другой подход который обычно называют shared mutex или RW-lock. Начни читать отсюда например: https://en.wikipedia.org/wiki/Readers–writer_lock ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2015, 05:05 |
|
||
|
Групповой или "общинный" mutex в Windows
|
|||
|---|---|---|---|
|
#18+
White Owl, спасибо, буду разбираться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2015, 10:13 |
|
||
|
Групповой или "общинный" mutex в Windows
|
|||
|---|---|---|---|
|
#18+
nitro789654123может возникнуть ситуация такая, что писатель вообще перестанет получать доступ ресурсам Не может. Если читателю нечего читать, то освобождаться будет мгновенно. В виндовсе лучше использовать event, освобождение которого запустит всех читателей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2015, 20:15 |
|
||
|
Групповой или "общинный" mutex в Windows
|
|||
|---|---|---|---|
|
#18+
Dima Tnitro789654123может возникнуть ситуация такая, что писатель вообще перестанет получать доступ ресурсам Не может. Если читателю нечего читать, то освобождаться будет мгновенно. Может-может. Чтобы читатель узнал что ему нечего читать, ему все равно надо взять ресурс на чтение. Да и далеко не всегда бывает так что читатели должны прочитать именно "новые" сообщения от писателя. Часто надо просто прочитать что там в буфере лежит, а насколько это значение новое не важно. В любом случае, читатель вовсе не за один такт свои дела делает. И если предпочтение отдано читателям, то может получится так что первый читатель хапает ресурс, в это время второй, третий, ... десятый читатели видят что ресурс запрещен на запись, но разрешен на чтение - поднимают свои собственные флаги "я читаю", и пока они читают, первый успел все дочитать, снять свой флаг, подождать, а потом снова пойти читать... В этом сценарии писатель действительно никогда не дождется своей очереди. В общем, читать Таненбаума до просветления. У него все типы блокировок хорошо рассмотрены. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2015, 22:55 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=39030181&tid=1340951]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
142ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 215ms |
| total: | 442ms |

| 0 / 0 |
