共有mmapの協調のfcntlロックを使用して?
-
25-09-2019 - |
質問
とき
?マッピング座標アクセスmmap()
(又はfcntl()
又はflock()
機能)を使用する(Linux、または他のUNIX系システムから)が可能(ポータブル)であり、共有メモリ用lockf()
を使用して
このSO synchronization?">スレッドまたはプロセスのために
解決 私はロックは、相互排他を提供します確信しているが、彼らはあなたのメモリバリアを与えるかどうかはわかりません。これは、カーネルに飛び込むように思える(fcntlの、群れ、そしてLOCKF行いますが)やってそうであるの何かのうち順序メモリの力が読み取りとコミットして書き込みますが、私はあなたが買ってあげる疑うことハード保証。私は、これは、それはおそらく働くものの一つだと思います、そしてテストはそれが仕事をしていることを示しますが、あなたは限り言って参照を見つけない限り、それは常に動作していることを知ることができません。 私はCからこれに似た何かをやったが、私は、共有メモリ自体に原子スピンロックを使用していました。それはあなたが、インラインアセンブリの少しをしなければならなかったということでしたが、GCCは、今あなたが使用できるいくつかの本質的な事業を展開しています: http://gcc.gnu.org/onlinedocs/gcc/Atomic- Builtins.htmlする 非常に単純なPython拡張を書くことは、あなたしているが喜んでいる場合、あなたはあなたが必要なものをやって__sync_lock_test_and_set(...)と__sync_lock_releaseを(...)ラップでした。これらは非常に移植する必要があります。 私も、共有メモリへのpthreadミューテックスを配置する方法があると信じて、私はそれでどんな経験を持っていません。ここでも、あなたは、Pythonからそれにアクセスするために、単純なC拡張を書く必要があるだろう。