スレッドをサポートする小さな組み込み RTOS を使用しています。私は C++ でプログラミングしており、任意のクラスの任意のメンバー関数をスレッドとして実行できるクラスを作成したいと考えています。RTOS はメンバー関数からのスレッドの作成を直接サポートしていませんが、スレッド内から呼び出された場合は問題なく動作します。Boost::thread は私のプラットフォームでは利用できません。
私は現在、フレンドの thread_starter() 関数を介してアドホックな方法でスレッドを開始していますが、スレッドを実行したいクラスごとに、これらのうちの 1 つを個別に用意する必要があるようです。スレッド基本クラスの現在のソリューションは仮想 run() 関数を使用しますが、これには、クラスに対して 1 つのスレッドしか開始できず、run() 関数 + 順番に呼び出すものに制限されるという欠点があります (つまり、私はできません)。 run() 内から任意の関数をエレガントに実行します)
クラス「X」メンバー関数内から次のことを実行できるように、テンプレート化されたクラス「スレッド」が理想的です。
class X
{
run_as_thread(void* p)';
};
X x;
void* p = NULL;
template<X>
thread t(x, X::run_as_thread, p);
//somehow causing the following to be run as a thread :
x->run_as_thread(p);
これが以前にここで死んでしまった場合は申し訳ありませんが、これを達成するために Boost::thread を使用することへの参照を見つけることしかできないようで、それは私には利用できません。また、ヒープにアクセスできないため、すべてのグローバルを静的にする必要があります。
どうもありがとう、
マイク