pub struct TidReceiver { /* private fields */ }Expand description
Emplacement mémoire où le kernel écrit (CLONE_PARENT_SETTID /
CLONE_CHILD_SETTID) ou efface (CLONE_CHILD_CLEARTID) le TID d’un enfant
créé par clone3.
Encapsule l’adresse d’un mot 32 bits partagé (AtomicU32) — un
tid_t côté kernel — plutôt qu’un pointeur nu (convention 1 de l’ADR-021 :
pas de pointeur brut non typé exposé). Le pattern de join de thread :
CLONE_PARENT_SETTID+parent_tid = &mot→ le kernel écrit le TID dans le mot, dans le contexte du parent, avant le retour declone3(sans course avec une terminaison précoce de l’enfant) ;CLONE_CHILD_CLEARTID+child_tid = &mot→ à la mort du thread, le kernel remet le mot à0et effectue unFUTEX_WAKEdessus. Le parent joint donc en bouclant surfutex_wait(&mot, tid)jusqu’à lire0.
Le mot doit rester vivant (et l’AtomicU32 non déplacé) jusqu’à la fin
du join ; cette garantie incombe à l’appelant de la fonction unsafe
clone_thread. Construire un TidReceiver est en soi inoffensif (on ne fait
qu’enregistrer une adresse).
Implementations§
Trait Implementations§
Source§impl Clone for TidReceiver
impl Clone for TidReceiver
Source§fn clone(&self) -> TidReceiver
fn clone(&self) -> TidReceiver
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreimpl Copy for TidReceiver
Auto Trait Implementations§
impl !Send for TidReceiver
impl !Sync for TidReceiver
impl Freeze for TidReceiver
impl RefUnwindSafe for TidReceiver
impl Unpin for TidReceiver
impl UnsafeUnpin for TidReceiver
impl UnwindSafe for TidReceiver
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more