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

Доброе утро! Помогите, пожалуйста с передачей и сохранением любой функции

в очереди. Почти всё работает)
https://cpp.sh/?source=%23include+%3Ciostream%3E%0A%0Ausing+namespace+std%3B%0A%0A%23include+%3Cchrono%3E%0A%23include+%3Cthread%3E%0A%23include+%3Cmutex%3E%0A%23include+%3Cqueue%3E%0A%23include+%3Ccondition_variable%3E%0A%0Ausing+namespace+std%3A%3Achrono%3B%0Ausing+namespace+std%3B%0A%0Atemplate%3Ctypename+F%3E%0Astruct+Job+%7B%0A++++time_point%3Csystem_clock%3E+time_to_exec%3B%0A%09F+func%3B%0A%7D%3B%0A%0Atemplate%3Ctypename+F%3E%0Ainline+bool+operator%3C(const+Job%3CF%3E+%26lhs%2C+const+Job%3CF%3E+%26rhs)+%7B%0A++++return+lhs.time_to_exec+%3C+rhs.time_to_exec%3B%0A%7D%3B%0A%0Astruct+Executor%0A%7B%0A++++Executor()+%7B%0A++++++++runner+%3D+thread(%26Executor%3A%3Arunning%2C+this)%3B%0A%09%7D%0A%0A++++~Executor()+%7B%0A%09%09unique_lock%3Cmutex%3E+lock(queue_mutex)%3B%0A%09%09stop+%3D+true%3B%0A%09%09runner.join()%3B%0A%09%7D%0A%0A%09void+running()+%7B%0A%09%09while(not+stop)+%7B%0A++++++++++++unique_lock%3Cmutex%3E+lock(queue_mutex)%3B%0A%0A%09%09%09if(jobs.empty())+%7B%0A++++++++++++++++cv.wait(lock%2C+%5Bthis%5D+()+%7Bnot+jobs.empty()+%7C%7C+stop%3B%7D)%3B%0A++++++++++++%7D+else+if+(jobs.top().time_to_exec+%3E+system_clock%3A%3Anow())+%7B%0A++++++++++++++++cv.wait_until(lock%2C+jobs.top().time_to_exec%2C+%5Bthis%5D()+%7Bnot+jobs.empty()+%7C%7C+stop%3B%7D)%3B%0A%09%09%09%7D+else+%7B%0A%09%09%09%09auto+job+%3D+jobs.top()%3B%0A%09%09%09%09jobs.pop()%3B%0A%09%09%09%09lock.unlock()%3B%0A%0A%09%09%09%09job()%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A++++template%3Ctypename+F%3E%0A++++void+exec(F+f%2C+milliseconds+timeout)+%7B%0A++++++++Job+job(f%2C+system_clock%3A%3Anow()+%2B+timeout)%3B%0A%0A%09%09unique_lock%3Cmutex%3E+lock(queue_mutex)%3B%0A%09%09jobs.push(job)%3B%0A%09%09cv.notify_one()%3B%0A%09%7D%0A%0A++++priority_queue%3CJob%3CF%3E%3E+jobs%3B+%2F%2F+%3C-----------%3F...+o_O%0A++++mutex+queue_mutex%3B%0A%09condition_variable+cv%3B%0A%09thread+runner%3B%0A%09bool+stop+%3D+false%3B%0A%7D%3B%0A%0Astring+str+%3D+%221234567%22%3B%0Aint+foo(int+5)+%7B%0A++++cout+%3C%3C+%22out+finally!%22+%3C%3C+str%5B5%5D+%3C%3C+endl%3B%0A%7D%3B%0A%0Aint+main()%0A%7B%0A++++Executor+executor%3B%0A++++executor.exec(%5B%5D()%7Bcout+%3C%3C+%22out+finally!%22%3B%7D%2C+seconds%7B5%7D)%3B%0A++++executor.exec(%26foo%2C+5%2C+seconds%7B7%7D)%3B%0A++++cout%3C%3C%22Hello+World%22%3B%0A%0A++++return+0%3B%0A%7D%0A

1 ответов

35 просмотров

Оберните код в теги: 3 символа ` до и после кода (в случае одиночной конструкции достаточно 1 ` с обеих сторон). Спасибо!

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

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

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
Карта сайта