pthread-win32延長sem_post_multiple
-
30-09-2019 - |
質問
私は現在、建物薄膜のC++ラッパれたblowfish暗号を使のための社内利用します。Windowsなどのサードパーティを対象に、幸いにされたblowfish暗号を使-win32ポートのようのものがQNXはconformantにPOSIX当社ました。
現在、実施しつつ、セマフォかの機能
sem_post_multiple(sem_t*, int)
でのみ利用されたblowfish暗号を使-win32では欠からQNX.その名の通り、機能が追加モードの場合は、ファイセマフォは、数として与えられた第二引数に使います。調査を実施しているのは、同じ伝える機能の一部をなすものPOSIX1bもPOSIX1c.
はないか、あるいはこの要件についての機能はまだまだなんだろうなされたblowfish暗号を使-win32の機能かどうかが利用します。もし真似でQNXを用い、例えば次のようなもの:
sem_post_multiple_qnx(sem_t* sem, int count)
{
for(;count > 0; --count)
{
sem_post(sem);
}
}
思いっていると言っても過言ではあり提案/アドバイスな進め方を詰めていきます。合意がな実施の機能QNXいますが、コメントからコードsnippedが実行可能な解決策です。
よろしくお願いします。
PS:いわざと残して派手なC++クラスの機能再構成に成功しました。.すべての人が向上の救出:ではありませんのオプション現在のプロジェクトにより管理ます。
解決
場合にセマフォはオプションの延長はPOSIX.E.g OS Xのように見えませんし、それらを実施するために。その場合は、携帯性にするための包装の機能には必要ない.
アプローチをエミュレートする原子増による反復 sem_post
あのマイナス面.
- かっ
が通常
sem_t
使用され パフォーマンスが重視されるコンテキストを共有します。 - この操作ができない 原子.わかりにくいのでもあ が起こる前に仕上がりです。
私はこだわりの必要について厳正なPOSIXには不適合です。ょう sem_timedwait
他のオプションパーツのセマフォのオプションです。
他のヒント
ご提案の実施 sem_post_multiple
な遊びも sem_getvalue
, て sem_post_multiple
は原子が上昇しではやってはいけないことで、"同時に"呼び出 sem_getvalue
の返還まで中間の値です。
個人的には思いっさりすっきりとした味わい:を使用することにより基礎的な同期を務めるシステムに欠けてのマグカップの試合は、ラッパーがすぐに停止する"薄型".なんでないコードを使用する sem_post_multiple
, は、絶対にいけます。
sem_post_multiple()は非標準のヘルパー関数の導入により、win32-blowfish暗号を使スペースからの通信が可能です。実装がないのと同じもので、複数の減らない原子.るかどうかが問題になって途に合わせて使用します。(個人的にかくこの機能がない限り/までが表示される場合があります。)
これは興味深い質問です。+1.
同意して現在の風合意はここでいうそれを実現する機能です。なご提案を実施いただくと作業のギーンゲンアンデアブレンほとんどの状況が絶対条件の研究成果は大きく異なる不atomicity.以下は一(非常に)逆状況:
- Startスレッドを呼びかけsem_post_multiple(s,10)
- スレッドB話"s"発売。スレッドB殺レA.
上記にかなり非好意的シナリオは、原子版が増加され、セマフォによる10.非原子版でのみ増分します。この例ではありませんが、実世界です。例えば、殺害のスレッドはほとんど常に悪いことはもちろんのこと、semaphoreオブジェクトでは無効な状態です。Win32の実施が残すことができる、ミューテックスのロックのセマフォ- この理由.