|
|
|
То ли у меня глюк, то ли в TThreadedQueue
|
|||
|---|---|---|---|
|
#18+
Никак не могу понять, как можно убедиться в том, что метод TThreadedQueue<T>.PopItem вернул реальное значение из очереди, а не Default(T). Вот реализация метода PopItem: Код: 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. 28. 29. 30. 31. Видно, что в качестве Result он может вернуть либо wrSignaled либо wrTimeout. Понятно, что если поток-producer вызовет метод DoShutDown, то будет возвращено Result=wrSignaled и значение Default(T), что неотличимо от нулевого значения, взятого из очереди. Даже такая проверка после вызова PopItem не поможет: Код: pascal 1. 2. 3. 4. т.к. этот ноль мог быть взять из очереди. Хотя может я и зря загоняюсь. Можно наверно Default(T) рассматривать как недопустимое значение... Вряд-ли кому-то придёт в голову добавлять в очередь нулевое значение :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2021, 00:41 |
|
||
|
То ли у меня глюк, то ли в TThreadedQueue
|
|||
|---|---|---|---|
|
#18+
http://docwiki.embarcadero.com/Libraries/Sydney/en/System.Generics.Collections.TThreadedQueue.PopItemThe last two methods return a TWaitResult. If the queue is empty, then the monitor waits for it to push an element. If no element is pushed in PopTimeout, the method returns wrTimeout; otherwise, the method returns wrSignaled. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2021, 00:58 |
|
||
|
То ли у меня глюк, то ли в TThreadedQueue
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, Ну это понятно и из реализации. Видимо забыли они про DoShutDown или времени нет доделать:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2021, 01:13 |
|
||
|
То ли у меня глюк, то ли в TThreadedQueue
|
|||
|---|---|---|---|
|
#18+
DmSer Видимо забыли они про DoShutDown или времени нет доделать:) DmSer Даже такая проверка после вызова PopItem не поможет: Код: pascal 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2021, 13:56 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=58&tid=2037723]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
31ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 233ms |
| total: | 331ms |

| 0 / 0 |
