In che modo i processi non correlati possono cooperare utilizzando un futex?Condividi futex tra processi non collegati
Diciamo che ho processi non correlati, uno è, ad esempio, un sottoprocesso di apache con il mio modulo, un altro è ad es. uno script in background.
Vorrei stabilire una variabile di condizione con un mutex tra i due utilizzando un futex, a vantaggio del percorso del codice veloce dello spazio utente.
Mi sembra che la memoria in cui è memorizzato il mutex possa essere in un file mmap
, se tale memoria è mappata, ad es. mlock
'i due processi potrebbero teoricamente emettere chiamate futex contro lo stesso indirizzo.
In alternativa, è possibile passare un futex da un processo a un altro utilizzando FUTEX_FD
.
Immissioni di codice sono accettate lingue di basso, alto livello e dinamiche (C, C++, Python, ecc.). Anche l'API "robusta futex" deve essere supportata.
Riferimenti:
- https://www.kernel.org/doc/Documentation/robust-futexes.txt
- http://locklessinc.com/articles/mutex_cv_futex/
P.S. Se ciò non può essere fatto, si prega di spiegare in dettaglio perché. –
La [manpage dice] (http://man7.org/linux/man-pages/man7/pthreads.7.html) che pthreads usa internamente i futex. Hai considerato di utilizzare semplicemente l'API di alto livello (come [futex manpage recommend] (http://man7.org/linux/man-pages/man7/futex.7.html)) e utilizzare una condizione pthread con ' PTHREAD_PROCESS_SHARED'? – Phillip
hai controllato questo http://locklessinc.com/articles/mutex_cv_futex/ – Ghayel