Size: a a a

2021 July 12

IC

Ilya Chernoudov in pro.net
Вся многопоточностью разобьётся о concurrent коллекцию
источник

AH

Ayrat Hudaygulov in pro.net
ой, да там лок фри элементарно сделать
источник

AH

Ayrat Hudaygulov in pro.net
так что не засчитано
источник

IC

Ilya Chernoudov in pro.net
источник

AH

Ayrat Hudaygulov in pro.net
spinWait оптимистик и погнали
источник

AH

Ayrat Hudaygulov in pro.net
над Interlocked compareExchange
источник

IC

Ilya Chernoudov in pro.net
Ты же в дотнете!
источник

AH

Ayrat Hudaygulov in pro.net
я так сто раз делал
источник

AH

Ayrat Hudaygulov in pro.net
брат жив
источник

AH

Ayrat Hudaygulov in pro.net
коллекция тоже
источник

IC

Ilya Chernoudov in pro.net
источник

IC

Ilya Chernoudov in pro.net
Нужна вот такая перегрузка со стейтом
источник

IC

Ilya Chernoudov in pro.net
Накапливать результат внутри одного воркера и в конце всё сложить в коллекцию
источник

AH

Ayrat Hudaygulov in pro.net
псевдокод
let mutable locked = false
let nonConcurrentCollection = ...

while true do
 if Interlocked.CompareExchange(&locked, true) == true then //вот тут надо опять доку читать, что там возвращается из
   nonConcurrentCollection.Add ...
   locked <- false
   break
 else
   spinWait 10 // где 10 это эмпирически выбранное кол-во циклов которое требуется на другой бранч ифа
источник

AH

Ayrat Hudaygulov in pro.net
ну короче тут даже если 10 потоков поломятся в одну коллекцию, то просто покрутятся чутка в спинвейте, но для оптимистичного локфри это ок
источник

IC

Ilya Chernoudov in pro.net
😔
источник

AH

Ayrat Hudaygulov in pro.net
Опять Илья вбрасывает
источник

AH

Ayrat Hudaygulov in pro.net
Давайте его и тут забаним по традиции
источник

IC

Ilya Chernoudov in pro.net
Да чего я то?
источник

IC

Ilya Chernoudov in pro.net
Это не я через одно место использую бцл
источник