Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Чтение/Запись Integer в несколько потоков / 14 сообщений из 14, страница 1 из 1
22.05.2020, 19:53
    #39960848
cptngrb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение/Запись Integer в несколько потоков
Может ли портиться память или произойти блокировки при чтении кол-ва элементов в очереди без синхронизации?
Например
Поток 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
22.05.2020, 20:03
    #39960852
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение/Запись Integer в несколько потоков
cptngrb
Может ли портиться память или произойти блокировки при чтении кол-ва элементов в очереди без синхронизации?
нет
...
Рейтинг: 0 / 0
22.05.2020, 20:04
    #39960853
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение/Запись Integer в несколько потоков
Это зависит от реализации геттера у Count, поскольку внезапно это не Integer, а property.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
22.05.2020, 20:11
    #39960858
Dmitry Arefiev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение/Запись Integer в несколько потоков
Ни то ни другое ... Я про 10.3.3
...
Рейтинг: 0 / 0
22.05.2020, 20:31
    #39960864
cptngrb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение/Запись Integer в несколько потоков
Dmitry Arefiev, а что?
...
Рейтинг: 0 / 0
22.05.2020, 20:32
    #39960865
cptngrb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение/Запись Integer в несколько потоков
В документации
Count gets the number of elements in the queue. This property cannot be set.
...
Рейтинг: 0 / 0
22.05.2020, 20:34
    #39960866
cptngrb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение/Запись Integer в несколько потоков
property Count: Integer read FQueueHelper.FLH.FCount;

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

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

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

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

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

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


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