私は、LinuxでのC++のユーザモードマルチスレッドライブラリ/フレームワークを探しています。私はboost :: threadとACE_Thread_Managerに精通していますが、AFAIKはどちらもOSネイティブスレッドのサポートを使用します。C++用のユーザーモードマルチスレッドライブラリ/フレームワークはLinux上にありますか?
提案が高く評価されます。
私は、LinuxでのC++のユーザモードマルチスレッドライブラリ/フレームワークを探しています。私はboost :: threadとACE_Thread_Managerに精通していますが、AFAIKはどちらもOSネイティブスレッドのサポートを使用します。C++用のユーザーモードマルチスレッドライブラリ/フレームワークはLinux上にありますか?
提案が高く評価されます。
MTaskerあなたが探しているものの種類ですか?また、協力的なマルチタスクライブラリです。また、いくつかの状態マシンを整理するだけでよいでしょう。
State ThreadsとMIT Pthreadsもチェックしてください。
このツールは、この目的のために使用することができ、階層ステートマシンの生成を支援します:CHSM
私はあなたのリンクをたどってきて面白そうです(私はCHSMが好きでした)。それを困惑させるのにもっと時間が必要です。ありがとうございました。 – mrvincenzo
+1 CHSM(面白い、OTでも)。 Boost.StateChartは同様のことをすることができます(Boostにはないものはありますか?:) –
GNU PTH:それはそれはGnuPGの中で使われている理由である協同組合マルチスレッド、使用する(セキュリティ上の理由から、実際のスレッドを望んでいませんが、応答性の理由からスレッドを必要とする)だhttp://www.gnu.org/software/pth/
。
"この方法では、プリエンプティブスケジューリングよりもランタイムパフォーマンスが向上します。" - もちろん、マシンに1つのコア。 –
私のマシンは一度コアを持っています - 実際には、アプリケーションは組み込み機器で動作しています。これらすべてのリンクは、多くの読書資料を提供しています (私は文句を言っていません)。あなたの答えをありがとう。 – mrvincenzo
@Earwicker:シングルコアでスループットの要求を満たすことができれば、タスクの切り替え、キャッシュラインの盗難、ロックオーバーヘッドなどは、プログラムが協調的なシングルスレッドのマルチスレッドよりネイティブのマルチスレッドで_slower_を実行する可能性が非常に高い"スレッディング。 –
あなたはインテルスレッドビルディングブロックをチェックアウトすることができます。彼/彼女は、並列にタスクベースのアプローチの多くを取る持ちながら(TBB)
http://www.threadingbuildingblocks.org/
それはスレッドの概念の多くは離れて、プログラマから抽象化しようとします。あなたはIOタイプの操作のためにスレッドにしたい場合は
私はしばらく前にこのトピックに関するブログselect
でマルチplexing検討することもでき:http://yz.mit.edu/wp/cooperative-threads-for-cc/。
私はフロントランナーのState-ThreadsとGNU Pthを比較していましたが、ドキュメンテーションとコードの慎重な検討に基づいて、PthよりもSTのシステムハッカーに大きな自信を持って歩きましたしかし、私は詳細を思い出すことはできません。私はSTに肯定的な経験をしていますので、Pthを試したことはありません。
私はSTについて心配していた唯一の事柄は、pthreadsとの相互作用(不可能性)に関する免責事項です。私は同じプロジェクトで両方を使用していました(PthはおそらくPthreadsと同じシンボル名を使用しているという理由があります)、問題は一度も出ませんでした。
これらの2つの特定のライブラリをあなたの(そして他人の)経験を知ることに興味がありますか?
ネイティブスレッドに問題があります。私はあなたが "ユーザモードのスレッド"を確実に書く方法を見ることができません。実際のスレッドの前にWindowsを覚えていますか?シャダー! –
私はその理由を第二に考えます。実際に並行性を持つことができるマルチコア環境では得られません。 –
マルチスレッディングのすべての使用は、スループットを向上させるためのものではありません... –