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

Эмм а как можно запустить thread и чтобы он был

non-blocking ?
смотрю на .join, а ведь он blocking. Я хотел бы запустить thread и дать ему например интервал времени на протяжение которого он должен выполнится, так чтобы join только его закрыл за милисекунду когда он до него дойдет.

Юз-кейс:
посылаю код который сохарняет файл за 14 секунд в отдельный thread, сразу после этого делаю слип на 60 секунд (в это время разные треды делают разную работу) и когда просыпаюсь, хотел бы удостовериться что код на сохранение уже был выполнен в течение этих 60 секунд.

17 ответов

24 просмотра
Ilya- Автор вопроса

пришла возможно бредовая идея, а может нет, запустить на самом деле еще один тред, который бы только делал .join на пишушщий тред, но тогда проблема рекурсивная, а кто будет ждать этот тред, поэтому так тоже не пойдет.

Нипонятна…..

Почитать про синхронизацию потоков. При чём тут non-blocking я так и не понял, но указанная задача решается уж точно не слипом на 60 секунд.

Ilya- Автор вопроса
Ilya
слип это не решение, а часть условий.

Слипо-ориентированное программирование ?

Ilya
слип это не решение, а часть условий.

Решается это блокированием потока, который должен ждать до момента, когда задача завершена. Это тоже не идеальный подход к многопоточному программированию, но уж точно лучше варианта "поспать 60 секунд, а вдруг там всё успеется".

Alexander "Ternvein" Isaev
Решается это блокированием потока, который должен ...

Если один поток боокируется пока не завершится второй - точно нужен первый то ?)

Андрей Баженов
Если один поток боокируется пока не завершится вто...

Ну он писал, что он там не один. на 60 секунд (в это время разные треды делают разную работу)

Андрей Баженов
Тредпул ему в руки

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

Ilya
пришла возможно бредовая идея, а может нет, запуст...

std::promise. И ждать фьючу. Или не ждать и юзать then/корутины, но это уже в бусте либо С++20 или тот же буст

Слава
Чем лучше?

Да хотя дя.. ему просто ждать… может на чем угодно хоть на атомике

Андрей Баженов
Может лучше condition variable ?

Мне всегда казалось, что торчащий наружу cv брать и на нем ждать это очень пахнущий код. cv ещё могут и просыпаться просто так

Любой thread не блокирующий.

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

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

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Раз начали говорить про embassy, то присоединюсь со своими парой вопросов. 1) Есть ли сопоставимые аналоги для асинхронного кода в emdebbed? 2) Можно ли внутри задач embassy ...
NI_isx
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Карта сайта