170 похожих чатов

А есть какой-нибудь аналог мьютекса, который можно использовать более чем

в одном потоке? скажем есть алгоритм, который выполняется, то на одном потоке, то на другом и нужно сделать захват на время выполнения алгоритма

25 ответов

10 просмотров

Семафор?

disba1ancer- Автор вопроса
Dmitriy [Отпуск]
Семафор?

а они есть в стд?

https://en.cppreference.com/w/cpp/thread/condition_variable не подойдет?

disba1ancer- Автор вопроса

Хз, а как им в подобном ключе воспользоваться можно?

тем что, подписываешься на потоки и ждешь, когда все отработают

disba1ancer
Хз, а как им в подобном ключе воспользоваться можн...

кондвары с мутексами равномощны семафорам вполне и в теории можно реализовать одно через другое

Alexander Malkov
тем что, подписываешься на потоки и ждешь, когда в...

Один ждёт многих, или многие ждут одного?

может не захват, а wait?

disba1ancer- Автор вопроса
Kelbon
может не захват, а wait?

Нет не wait именно захват а одном потоке и освобождение в другом, считай что это в корутине и в какой-то точке она переехала на другой поток не отпуская лок

disba1ancer
Нет не wait именно захват а одном потоке и освобож...

ну блин пусть ставит флажок атомарный "занято"

вы хотите странного. C++ ные примитивы синхронизации под капотом работают с тем, что предоставляет OS. для OS владельцем mutex является конкретный тред

Boris Usievich
вы хотите странного. C++ ные примитивы синхронизац...

Вы не очень прав 1) ос не всегда предоставляет примитивы синхронизации, а те что есть не всегда стоит использовать 2) mutex, у которого можно звать unlock не в lock треде, можно реализовать как semaphore с release(1) в unlock и ctor, acquire(1) в lock 3) такой мьютекс бывает полезен, я бы не сказал что это странно, простейший пример fork, сложнее например некий асинхронный код исполнение которого вместе с захваченным для каких то данных ресурсов мьютексом может перемещаться между потоками

1) стоит ли пользоваться такими OC в которых нет mutex? 2) это будет не mutex, а что-то другое. Реализовать можно, да. 3) полезно? где-то да. Но см. выше, это не mutex.

Ну если locked заменить на счётчик то это семафор и есть.

disba1ancer- Автор вопроса
Dmitry Sokolov
Ну если locked заменить на счётчик то это семафор ...

В общем вариант для тех у кого кроме мьютексов ничего нету, но интересный вариант

Boris Usievich
1) стоит ли пользоваться такими OC в которых нет m...

1) например в линуксе нет, я только в винде знаю системные мьютексы

Arelav
Ну не мьютекс

Fast userspace mutex Да ладно

Dmitriy [Отпуск]
Fast userspace mutex Да ладно

Ой ну не надо тут давайте Wait/WakeOnAddress тоже мьютексом называть

Dmitriy [Отпуск]
Fast userspace mutex Да ладно

Он назван плохо, futex — это про всю реализацию мьюеткса вместе с юзерспейсным атомиком Странно сисколл называть юзерспейсным

Arelav
Ой ну не надо тут давайте Wait/WakeOnAddress тоже ...

Тут уже давно придирки к словам пошли, так что я продолжу :) Wait/WakeOnAddress() хранят хэш-таблицу в юзерспейсе - внутри ntdll. Причем, судя по беглому взгляду, (почти) lock-free

а зачем post(1) в конструкторе?

место имение рейверы
а зачем post(1) в конструкторе?

Ну потому что если в семафоре будет 0 после конструктора, то мьютекс у нас не получится так как захватить его будет нельзя

Похожие вопросы

Обсуждают сегодня

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Добрый день. Хочу сделать отрисовку по команде на панели. Почему-то рисуется только при втором вызове. С чем может быть связано, не подскажете? procedure TForm1.FormDblClick(...
Kirill Filippenok
20
Всем доброго дня! Подскажите может кто использовал связку Pagebuilder + Clientsetting. Сами параметры с типом pagebuilder в модуле Clientsetting работают нормально, можно такж...
Александр Добриков
12
А почему в си некоторые вещи работают с двойными кавычками некоторые с одинарными? Нельзя было все сделать с одними или чтоб работало с разными? например чтоб выводить строки ...
.
15
Всем привет! Нужен совет от опытных. Переношу свой проект с Делфи 10.2 Токио на Лазарус 3.2 установленный через инсталлятор fpcupdeluxe-x86_64-win64. При импортировании проект...
Дмитрий Завгородний
7
Эх кто-то пришел и весь праздник испортил :( You need complex FBX scene importing setup to change things on import? good luck with that. You need navigation and pathfinding? g...
Serg Gini
5
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Всем привет! procedure TForm1.FormCreate(Sender: TObject); type TStartEnd = record S: Byte; E: Byte; end; var a, b: TStartEnd; begin {1} a.S := 1; {2} a.E := 2; ...
Руслан Михайлович
10
Всем привет!) я тут новенький и пытаюсь освоить evolution методом тыка. У меня при переходе между папками файлов выскакивают вот такие уведомления Можете подсказать как их от...
Диман Samoed
10
Какого хера? /Sources/App/Modules/User/Models/UserLinkApple.swift:21:20: warning: stored property '_id' of 'Sendable'-conforming class 'UserLinkApple' is mutable @ID(...
Alexander Sherbakov
14
Карта сайта