|
|
|
Синхронизация объектов в списке
|
|||
|---|---|---|---|
|
#18+
Чуствую что изобретаю велосипед, но ... Есть список объектов. И есть множество потоков, которые работают с этими объектами. Работу пытаюсь организовать таким образом(В качестве объекта синхронизации использую критические секции). Код: plaintext 1. 2. Но как организовать удаление этого объекта ни как не пойму. Удалить безопасно критическую секцию я так понимаю не возможно, так как она потенциально всегда блокирована другим потоком. Поэтому помещать критическую секцию в объект не возможно. Если делать отдельный пул критических секций и данамически связывать его с новыми объектами то возникает задача блокирование блокирования :{ объекта с этим именем и одновременное ожидание пока все потоки вызвавшие Lock для данного объекта не вызовут Unlock. При этом блокирования работы с другими объектами списка не должно быть. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. Еще я пытался возвращать из Lock указатель на CS тогда в Delete вызов m_head.Delete(Name); становился безопасным и предотвращал удачный вызов Lock(Name), но как сделать ожидание пока все получившие CS потоки их не освободят я так и не придумал. Удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2007, 14:05 |
|
||
|
Синхронизация объектов в списке
|
|||
|---|---|---|---|
|
#18+
Может в объекте списка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2007, 14:20 |
|
||
|
Синхронизация объектов в списке
|
|||
|---|---|---|---|
|
#18+
Так ведь объекты из списка не знают о синхронизации, а сам список блокировать не правильно. Я вот щас сделал. Cижу смотрю вроде должно работать Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2007, 14:36 |
|
||
|
|

start [/forum/topic.php?fid=57&gotonew=1&tid=2029504]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
159ms |
get topic data: |
11ms |
get first new msg: |
6ms |
get forum data: |
3ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 250ms |
| total: | 501ms |

| 0 / 0 |
