[第 32 天] 閱讀 Rust 原子和鎖 — 基於突變的簡單通道

https://chengr4.medium.com/day32-read-rust-atomics-and-locks-a-simple-mutex-based-channel-ed32876fe7e6

[Day32]閱讀 Rust Atomics and Locks — 一個簡單的基於 Mutex 的通道

在章節: 第 5 章 简单基于 Mutex 的通道

Recall

std::sync::Condvar

常用來等待由 Mutex 保護的資料發生變化的選項

兩個基本操作: wait 和 notify

Condvar 必須與 Mutex 一同使用(缺點)

此外,Condvar 通常只與單個 Mutex 一同使用(不能使用多個 Mutex)

多個線程可以等待相同的 Condvar

同時,通知可以發送給所有等待線程中的一個,或全部

用途: 建立一個通道

Condvar::wait_timeout(): 若線程在一定時間內未收到通知,應該喚醒並重新獲取鎖

Notes

了解 Condvar 對於本文非常重要

通道功能: 從一個線程傳送數據至另一個線程

簡單實現:

此通道允許任意數量的發送和接收線程

(缺點)若 VecDeque::push 需要增加 VecDeque 的容量,所有發送和接收線程將必須等待該線程完成重新分配。

(缺點)此通道的佇列可能無限增長。

via Rust on Medium

June 3, 2024 at 10:45AM

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *