5 SODA for Cアプリケーションにおけるマルチスレッド
SODA for Cは、アプリケーションのロックレス・マルチスレッド用に設計されています。
マルチスレッド処理を実現するには、単にSODAアプリケーションの各スレッドごとに個別のハンドルを使用します。SODAハンドルはスレッド間で共有されるようには設計されていません。特に、スレッド間の相互排他を交渉するためにmutexでロックされません。
たとえば、複数のスレッドから同じコレクションを読取りまたは書込みするには、OCISodaCollOpen()
を使用し、各スレッドで個別のコレクション・ハンドルを取得し、各ハンドルを使用して読取りおよび書込み操作を実行します。
ドキュメント・ハンドルの場合にのみ、スレッド間でSODAハンドルを共有することに意味がある場合もあります。
たとえば、あるスレッドがドキュメントを作成してキューに入れることがありますが、一方でワーカー・スレッドが先頭のドキュメントをデキューしてコレクションに挿入します。この場合、ドキュメント・ハンドルがスレッド間で共有できた可能性があります。
複数のスレッドを同時に同じドキュメントで動作させることは必要ではなく、1つのモジュール・ハンドルをスレッド間で渡すことができます。ドキュメント・ハンドルが異なるスレッドから同時にアクセスされないように、アプリケーションレベルの同期を提供するのはユーザーの責任です。