powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Потоки
10 сообщений из 10, страница 1 из 1
Потоки
    #39715798
NZeg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
два потока работают с TStringList
Первый поток считал первую строку - увеличил кол-во считанных строк
И так они поочерёдно строки считывают.
Т.е. к одной и той же строке оба они не могут обратиться.
Нужно ли этот код добавлять в критическую секцию?
...
Рейтинг: 0 / 0
Потоки
    #39715818
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NZeg,

да хоть и к одной строке. если только оба читают. и никто параллельно не пишет. а вот счетчик надо синхронизировать.
...
Рейтинг: 0 / 0
Потоки
    #39715822
NZeg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, счётчик синхронизировал.
а если код в потоке заключить в try except, при одновременном обращении двух потоков к одной строке меня выкинет в except или поток просто завершится или ничего не будет?
...
Рейтинг: 0 / 0
Потоки
    #39715863
Олег Третьяков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NZegа если код в потоке заключить в try except, при одновременном обращении двух потоков к одной строке меня выкинет в except или поток просто завершится или ничего не будет?Обращения к списку из любого потока - readonly?
Никуда не выкинет и ничего не будет.
Но! Если добавляет, корректирует значения, удаляет третий поток - список должен быть потокобезопасным для всех потоков.

NZegдва потока работают с TStringList
Первый поток считал первую строку - увеличил кол-во считанных строкВот здесь я ничего не понял! Как работают? Откуда считал? Куда положил? Где увеличил?
NZegИ так они поочерёдно строки считывают.
Т.е. к одной и той же строке оба они не могут обратиться.Чем это гарантировано?
NZegДа, счётчик синхронизировал.Какой счетчик? С чем синхронизировал?
...
Рейтинг: 0 / 0
Потоки
    #39715886
Фотография krapotkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как обычно, автор придумывает кривой алгоритм и пытается его реализовать

на самом деле обычно нужно создать поток, выдать ему ОДНУ строку из и запустить его
таких потоков создать N штук
при окончании работы потока в событии OnTerminate проверить, все ли строки обработаны, если нет, запустить новый поток с очередной строкой

и не надо ничего выдумывать ни с критическими секциями, ни с другими видами cинхронизаций
...
Рейтинг: 0 / 0
Потоки
    #39715894
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NZegдва потока работают с TStringList
Первый поток считал первую строку - увеличил кол-во считанных строк
Проще брать чёт-нечёт без всяких счетчиков.
...
Рейтинг: 0 / 0
Потоки
    #39715902
MBo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MBo
Гость
NZeg,

А какова реальная задача?
...
Рейтинг: 0 / 0
Потоки
    #39715982
Фотография Dimonka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно автору нужен TMultiReadExclusiveWriteSynchronizer?

http://docwiki.embarcadero.com/Libraries/Tokyo/en/System.SysUtils.TMultiReadExclusiveWriteSynchronizer

Подойдёт как раз для такого запущенного случая доступа к одному ресурсу.
...
Рейтинг: 0 / 0
Потоки
    #39715990
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А чего городить странные вещи, если только чтение (я так полагаю, задача - это разгребание очереди заданий), то InterlockedIncrement и всё
...
Рейтинг: 0 / 0
Потоки
    #39716171
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krapotkinв событии OnTerminate проверить, все ли строки обработаны, если нет, запустить новый поток с очередной строкойИ зачем люди пулы потоков придумали? Если можно запустить, прибить, запустить...
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Потоки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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