Size: a a a

2020 July 04

CC

Chris Calvin in pro.cxx.holywars
Контракт определяет ЧТО сделать, а не КАК сделать
источник

CC

Chris Calvin in pro.cxx.holywars
Не-не-не
источник

CD

Constantine Drozdov in pro.cxx.holywars
Всё его API должно быть лок-фри
источник

CC

Chris Calvin in pro.cxx.holywars
Погоди)
источник

CC

Chris Calvin in pro.cxx.holywars
у тебя есть контракт который описывает ЧТО должно произойти
источник

CD

Constantine Drozdov in pro.cxx.holywars
так
источник

CC

Chris Calvin in pro.cxx.holywars
Как оно происходит зависит от конкретной имплементации которую выбирает пользователь API
источник

CD

Constantine Drozdov in pro.cxx.holywars
есть модуль многопоточной работы
источник

CD

Constantine Drozdov in pro.cxx.holywars
он описывает атомики и мьютексы
источник

CC

Chris Calvin in pro.cxx.holywars
Я дам пример как это люди решают в ФП
источник

CD

Constantine Drozdov in pro.cxx.holywars
из него должен быть удален мьютекс
источник

CC

Chris Calvin in pro.cxx.holywars
Есть некоторый враппер который определяет будет ли тут блокирующее или неблокирующее взаимодействие. Вот Пользователь апи просто передает этот враппер. Уже пользователь описывает КАК он хочет чтобы проводились операции, а контракт обязует имплементации делать ТО, ЧТО прописано в контракте
источник

CC

Chris Calvin in pro.cxx.holywars
За то КАК именно это работает отвечает caller/API user
источник

CC

Chris Calvin in pro.cxx.holywars
Если перенести на твой случай, то кмк следует определить контракт ЧТО делаем, и 2 имплементации которые отличаются вот этим вот КАК делать
источник

CC

Chris Calvin in pro.cxx.holywars
Но тут есть офк проблема - много лишних слоев абстракции
источник

CC

Chris Calvin in pro.cxx.holywars
Но на этапе ранней разработки лучше сделать больше слоев абстракции и впоследствии когда будет выстроена более четкая картина их редуцировать
источник

CC

Chris Calvin in pro.cxx.holywars
В таком случае тебе не нужные прототипы(у тебя это выходит в отдельные имплементации которые если надо выбрасываются или модифицируются) и у тебя нет большой боли с изменением корневой логики, ведь количество слоев абстракции которые ты нагородил позволяет тебе очень гибко менять любую концепцию
источник

CC

Chris Calvin in pro.cxx.holywars
Вербозно, зато нет каши
источник

CD

Constantine Drozdov in pro.cxx.holywars
смотри
источник

CD

Constantine Drozdov in pro.cxx.holywars
у тебя очень волшебная система, и скедулер не дескедулит блокированные потоки
источник