Я уверен, что замки обеспечат взаимное исключение, но я не знаю, дадут ли они вам барьер памяти. Похоже, что прыжок в ядро (что будут делать fcntl, flock и lockf), вероятно, сделает что-то , что вынудит неупорядоченные операции чтения и записи памяти для фиксации, но я сомневаюсь, что у вас возникнут серьезные проблемы гарантия. Я думаю, что это одна из тех вещей, где она, вероятно, работает, и тестирование покажет, что она работает, но вы не узнаете, что она всегда работает, если не найдете справку, говорящую так много.
Я сделал что-то похожее на C, но я использовал атомные спин-блокировки в самой общей памяти. Раньше вам приходилось делать небольшую встроенную сборку, но теперь у gcc есть некоторые внутренние операции, которые вы можете использовать:
http://gcc.gnu.org/onlinedocs/gcc/Atomic-Builtins.html
Если вы хотите написать очень простое расширение Python, вы можете заключить __sync_lock_test_and_set (...) и __sync_lock_release (...), чтобы сделать то, что вам нужно. Они должны быть довольно портативными.
Я полагаю, что есть способ поместить мьютексы pthread в общую память, но у меня нет никакого опыта с этим. Опять же, вам нужно написать простое расширение C, чтобы получить доступ к нему из Python.