私は現在、社内で使用する pthreads の周りに薄い C++ ラッパーを構築しています。QNX と同様に Windows もターゲットにされており、幸いなことに pthreads-win32 ポートは非常にうまく機能しているように見えますが、QNX は実用的な目的のために POSIX に準拠しています。
今、セマフォを実装しながら、関数をヒットしました
sem_post_multiple(sem_t*, int)
これは明らかに pthreads-win32 でのみ利用可能ですが、QNX にはありません。名前が示すように、この関数は、2 番目の引数として指定された数だけセマフォをインクリメントすることになっています。私が知る限り、この関数は POSIX 1b にも POSIX 1c にも含まれていません。
現在、上記の関数の要件はありませんが、pthreads-win32 が関数を提供する理由と、それが役立つかどうかについてはまだ疑問に思っています。次のようなものを使用して、QNX でそれを模倣することができます。
sem_post_multiple_qnx(sem_t* sem, int count)
{
for(;count > 0; --count)
{
sem_post(sem);
}
}
私が求めているのは、進め方についての提案/アドバイスです。コンセンサスが QNX の機能を実装することを提案している場合は、提案された抜粋されたコードが実行可能な解決策であるかどうかについてもコメントをいただければ幸いです。
前もって感謝します。
PS: わかりやすくするために、派手な C++ クラスを意図的に省略しました。救助へのブーストを提案しているすべての人々のために:管理上の理由により、私の現在のプロジェクトではオプションではありません。