2016-04-10 6 views
1

cythonでnogilを使ってmallocでメモリを割り当てても安全ですか? また、マルチスレッドのプログラムをnogilで実行している場合でも、ポインタを渡すことは安全ですか?Mallocはnogilと一緒に使うのが安全ですか?

+1

もちろん。あなたが完了したらあなたの記憶を解放し、適切なときにロックを使用する限り、あなたは金色です。 –

答えて

2

CPythonsメモリ管理がthread-safeではないため、GILが配置されています。結果として、でPythonオブジェクトとやりとりしない場合、つまりPythonによって処理されるメモリの場合にnogilを使用できます。

これはドキュメントfor releasing the GILに記載されている:文の本体に

コードは、どのような方法でPythonオブジェクトを操作してはならない、と最初GILを再取得することなく、Pythonオブジェクトを操作するものを呼び出してはいけません。 Cythonは現在これをチェックしていません。だから、

mallocを使用して、ポインタを渡すとCに合法である何かを行うと、長い何Pythonのオブジェクトが関与されていない限り完全に安全です。

関連する問題