1

C 用の単純なプラットフォームに依存しない同時実行 (別名スレッド) ライブラリを作成または検索したいと考えています。OS 依存のスレッド API を使用せずにこれを実装したいと考えています。「真のスレッド化」である必要はないので、この用語の使用を避けました。このライブラリを実装するプログラムは、OS には単一のプロセスとして表示されます。

OpenMP、Windows 用のハッキーな pthreads の実装、Intel Cilk Plus、Duff のデバイスのバリエーション (有望に見える) など、いくつかのオプションを検討しました。このウェブサイトでリードを探しました。自分の道を切り開く時が来ました。

絞り込みました。できるだけ標準に近い C でこれを行いたいです (C11、Boost などを避けることをお勧めします)。理想的には、外部ライブラリをまったく使用せずにこれを行いたいと考えています。使用する必要がある場合は、ランタイムを使用してはなりません。

どこから始めればよいかを知っていれば、これをやってのけることができるという自信があります。私は C の専門家ではありませんが、非常に有能な独学です。私が探しているのは、このライブラリの実装に関するアドバイス、指針、または考えです。

現在の考え: プログラム カウンター、リターン ポインターなどを使用して、アセンブリの共有メモリ モデルを偽造または再実装する必要があります。

関連:スレッディングの実装(最初の回答。)私はこのようなものをもっと探しています。

また関連: http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=54489

4

1 に答える 1

1

私はかつて、setjmp と longjmp だけを使用して Turbo C でスレッド化サブシステム (協同組合) を構築しました (もちろん、スタックをいじるための小さな asm も使用しました)。それは可能ですが、私の意見では、非標準の C を使用したくないというあなたの希望は賢明ではありません。

私たちは pthreads を使用しており (Windows プラットフォームでは pthreads w32 で十分です)、これは、すばらしい C11 スレッド機能がどこでもサポートされるまでは、可能な限りクロスプラットフォームです。私のアドバイスは、嫌悪感を再考することです-あなたは自分自身を痛みの世界に設定しています.

于 2013-01-03T04:26:10.333 に答える