powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Чтение/Запись Integer в несколько потоков
14 сообщений из 14, страница 1 из 1
Чтение/Запись Integer в несколько потоков
    #39960848
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может ли портиться память или произойти блокировки при чтении кол-ва элементов в очереди без синхронизации?
Например
Поток 1 читает
Код: pascal
1.
cnt:= TQueue.Count;


Поток 2
Код: pascal
1.
2.
3.
4.
FLock.Enter;
if TQueue.Count > 0 then
TQueue.Dequeue;
FLock.Leave;


Поток 3
Код: pascal
1.
2.
3.
FLock.Enter;
TQueue.Enqueue;
FLock.Leave;


Достоверность при чтении без крит. секции не важна.
...
Рейтинг: 0 / 0
Чтение/Запись Integer в несколько потоков
    #39960852
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cptngrb
Может ли портиться память или произойти блокировки при чтении кол-ва элементов в очереди без синхронизации?
нет
...
Рейтинг: 0 / 0
Чтение/Запись Integer в несколько потоков
    #39960853
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это зависит от реализации геттера у Count, поскольку внезапно это не Integer, а property.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чтение/Запись Integer в несколько потоков
    #39960858
Фотография Dmitry Arefiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ни то ни другое ... Я про 10.3.3
...
Рейтинг: 0 / 0
Чтение/Запись Integer в несколько потоков
    #39960864
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry Arefiev, а что?
...
Рейтинг: 0 / 0
Чтение/Запись Integer в несколько потоков
    #39960865
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В документации
Count gets the number of elements in the queue. This property cannot be set.
...
Рейтинг: 0 / 0
Чтение/Запись Integer в несколько потоков
    #39960866
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
property Count: Integer read FQueueHelper.FLH.FCount;

а внутри FQueueHelper.FLH.FCount;

FCount: Integer;
...
Рейтинг: 0 / 0
Чтение/Запись Integer в несколько потоков
    #39960867
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov, а такое property можно в потоке читать бесстрашно? ))
...
Рейтинг: 0 / 0
Чтение/Запись Integer в несколько потоков
    #39960888
Фотография Dmitry Arefiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cptngrb
Dimitry Sibiryakov, а такое property можно в потоке читать бесстрашно? ))

Да, если только TQueue не разрушается.

А так, ты можешь получить значение Count не согласованное с внутренним массивом. Дальше при Dequeue ты можешь получить исключение, если рассчитывешь, что Count > 0 показывает наличие элементов в очереди.

Ну или как еще ... Я хз как ты используешь Count.
...
Рейтинг: 0 / 0
Чтение/Запись Integer в несколько потоков
    #39961002
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry Arefiev, при Dequeue / Enqueue используется крит. секция, отдельно Count я вызываю только для статистики
...
Рейтинг: 0 / 0
Чтение/Запись Integer в несколько потоков
    #39961733
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cptngrb
а такое property можно в потоке читать бесстрашно? ))
Да. Пока в следующей версии не поменяют реализацию
...
Рейтинг: 0 / 0
Чтение/Запись Integer в несколько потоков
    #39961867
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а ТОЛЬКО чтение StringList может испортить память ?

Код: pascal
1.
str:= StringList[i];
...
Рейтинг: 0 / 0
Чтение/Запись Integer в несколько потоков
    #39961893
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Испортить память - нет. Нарваться на AV - да.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чтение/Запись Integer в несколько потоков
    #39961995
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov, к сожалению AV в логе не увидел, а потоки подвесил
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Чтение/Запись Integer в несколько потоков
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]