La dimensione relativamente grande di std::mutex
su piattaforme diverse (ad es. 40 o anche 80 byte) viene spesso spiegata come garanzia che i mutex non occupino le stesse linee di cache e quindi non si verifichino logicamente inutili ritardi e attività di sincronizzazione .
Tuttavia un std::mutex
è comunemente incorporato in un oggetto più grande e la sua dimensione è (quasi di progettazione) un danno per la vera condivisione.
Che cos'è un buon design per un mutex minimo?
Una progettazione spin-lock a un byte è abbastanza banale ma un mutex 'vero' in cui i thread sospendono finché la notifica non è più una sfida. Non riesco a trovare un modo portabile per un thread per notificare un altro thread a unsuspend / unsleep senza ricorrere a un mutex.