怎麼把C 的併發程式設計玩出花來?

時間 2021-05-30 19:29:27

1樓:

想要花就需要你自己搞一套庫,設計一套與眾不同的風格,不過再花不也不可能比executors更花:

timed_single_thread_context context; // 乙個支援定時器的執行緒

auto scheduler = context.get_scheduler();

std::atomic count; // 乙個變數

sequence(

schedule_after(scheduler, 50ms),

lazy([&])) // 每隔50ms將count加1

| repeat_effect() // 重複執行上面的邏輯

| stop_when(schedule_after(scheduler, 500ms)) // 500ms以後退出

| sync_wait(); // 等待執行完畢

還有async_mutex mutex; // 鎖

int sharedState = 0; // 共享變數

// 協程,獲取鎖並更改sharedState,執行十萬次

auto makeTask = [&](manual_event_loop::scheduler scheduler) -> task ;

// 兩個執行緒

single_thread_context ctx1;

single_thread_context ctx2;

// 同時在兩個執行緒中分別執行上面的更改邏輯,並等待完成

sync_wait(when_all(makeTask(ctx1.get_schedulermakeTask(ctx2.get_scheduler現在sharedState的值應該是20萬

if (sharedState != 200'000)

全文:executors for c++23學習與實現入門(一)

2樓:Mathm

用好 atomic,future,promise,mutex ,condition_variable,thread,async,lambda, + coroutine

怎麼看待程式語言Go中的併發程式bug(concurrency bug)?

慕尼黑1921 以下內容,純屬胡扯,如有雷同,概不負責。一百多年前,放射光線的謎霧籠罩歐洲物理學的上空。一百多年後,併發程式的bug的迷霧籠罩著軟體測試行。一百多年前,在眾多科學家的努力下,鈾和放射光線有了不可避免地關係。一百多年後,在眾多科學家地努力下,data race被認為是併發漏洞地主要原因...

用計算機程式設計(c )把給定長度(大於1024)的二進位制長串轉換成十進位制字串作為結果的思路是什麼?

Kouei 先設定乙個初始的十進位制數作為結果,它的每一位都是0然從高位到低位,依次遍歷那個二進位制數的每一位。每訪問一位,就將結果十進位制數的每一位乘以2,然後再在個位加上當前二進位制位,是1就加1,是0就加0。然後,各位按照十進位制的規則,滿十進一。這樣二進位制的一位就處理完了,迴圈往復,直到處...

說說咱都是怎麼把花養死的?

周俊巨集123 好多好多人都說自己養啥死啥,我就很好奇了,大家都是怎麼把花養死的呢?我乙個朋友就是這樣的。她是怎麼操作的呢?她人比較勤快,沒事就給花澆水,結果是無論多好養的花,都會慘死在她手下。這就是傳說中 我要我覺得,不是你覺得 我想怎麼做就怎麼做,不管植物需不需要。總怕植物缺水乾旱而亡,結果沒有...