Suppongo che potresti adattare algoritmi di mutua esclusione distribuiti (Ricart / Agrawala, ecc.), ma a parte questi approcci più esotici, ti viene richiesto di utilizzare le primitive fornite dal sistema operativo per ottenere l'esclusione reciproca?
Ad esempio, in C # si usa qualcosa come lock:
lock (myobject)
{
// Do something
}
Lock quindi usa una variabile di condizione fornita dal sistema operativo (credo?). Da tutto ciò che ho letto sui monitor, tutti si basano su alcune sezioni dell'implementazione del monitor eseguite a livello atomico. E l'unico modo (che io possa pensare) per garantire che è se il kernel lo ha reso esplicitamente così. È giusto?