|
|
|
WIN: EnterCriticalSection/LeaveCriticalSection
|
|||
|---|---|---|---|
|
#18+
Являются ли процедуры из сабжа ref counted? По идее из доки микрософта https://msdn.microsoft.com/en-us/library/windows/desktop/ms682608(v=vs.85).aspx msdnA thread must call LeaveCriticalSection once for each time that it entered the critical section. т.е. по идее они есть ref count защищенными, но хотелось бы уточнить.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2016, 16:29 |
|
||
|
WIN: EnterCriticalSection/LeaveCriticalSection
|
|||
|---|---|---|---|
|
#18+
Сомневаешься - затести. Не совсем понял что подразумевается под ref counted. Что касаемо приведенной цитаты, я ее так понимаю: "LeaveCriticalSection() вызывать однократно после каждого вызова EnterCriticalSection()". т.к. лишний вызов LeaveCriticalSection() может вызвать досрочное освобождение критической секции начатой в другом потоке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2016, 17:09 |
|
||
|
WIN: EnterCriticalSection/LeaveCriticalSection
|
|||
|---|---|---|---|
|
#18+
Dima T, тест - это как раз то, что влом было писать. Хотя он был до неприличности короткий. Под ref count (подсчет ссылок) я имел ввиду следующее: Код: pascal 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. убьет ли один Leave два Enter или только один из них? Оказалось только один из них, и юзверь мессагу никогда не удивит. Как-то так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2016, 18:35 |
|
||
|
WIN: EnterCriticalSection/LeaveCriticalSection
|
|||
|---|---|---|---|
|
#18+
второй Enter не произойдет пока из первого не выйдет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2016, 19:16 |
|
||
|
WIN: EnterCriticalSection/LeaveCriticalSection
|
|||
|---|---|---|---|
|
#18+
Написал потом засомневался, решил затестить: заходит во вторую Код: sql 1. 2. 3. 4. 5. 6. результат Код: sql 1. 2. сейчас треды добавлю, посмотрю как Leave работает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2016, 19:24 |
|
||
|
WIN: EnterCriticalSection/LeaveCriticalSection
|
|||
|---|---|---|---|
|
#18+
Эй, вы чего? У Рихтера же однозначно сказано: " Если значения элементов структуры свидетельствуют, что ресурс уже захвачен вызывающим потоком, EnterCriticalSection обновляет их, отмечая тем самым, сколько раз подряд этот поток захватил ресурс... ". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2016, 19:29 |
|
||
|
WIN: EnterCriticalSection/LeaveCriticalSection
|
|||
|---|---|---|---|
|
#18+
Да, привязка к потоку есть. Если честно думал что секции к потоку не привязаны. тест Код: 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. результат Код: sql 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2016, 19:34 |
|
||
|
WIN: EnterCriticalSection/LeaveCriticalSection
|
|||
|---|---|---|---|
|
#18+
Похоже к потоку привязаны только Enter`ы, Leave уменьшает счетчик из любого потока. тест Код: 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. Результат Код: sql 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2016, 19:40 |
|
||
|
WIN: EnterCriticalSection/LeaveCriticalSection
|
|||
|---|---|---|---|
|
#18+
Так низзя : "If a thread calls LeaveCriticalSection when it does not have ownership of the specified critical section object, an error occurs that may cause another thread using EnterCriticalSection to wait indefinitely." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2016, 20:11 |
|
||
|
WIN: EnterCriticalSection/LeaveCriticalSection
|
|||
|---|---|---|---|
|
#18+
MrCatЭй, вы чего? Да с Enter более понятно , чем с Leave. По той же моей ссылке из микрософт MSDNAfter a thread has ownership of a critical section, it can make additional calls to EnterCriticalSection or TryEnterCriticalSection without blocking its execution. А вот про Leave они ничего не написали. Пришлось тестить... Боялся, чтобы не вышло как для Rollback для БД. Благо нет, подсчет ссылок работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2016, 12:18 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=39209644&tid=1340749]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
132ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 244ms |
| total: | 462ms |

| 0 / 0 |
