Win32APIでのスレッド処理
こんにちは。
質問ですが、自分の環境はWindowsXP SP3 VisualStudio.NET2005 でのC++でのプログラミングです。
まず、スレッド作成をするために、_beginthreadexを用いているのですが、このやり方で、5,6個のスレッドを作成すると処理が逆に重くなってしまいました。
このスレッドは排他制御をしていないものです。
以下にソースの一部を載せます。
/////////////////////////
// スレッド作成
BOOL TestFunc::ThreadRegist(void)
{
UINT thID = 0;
if((hThread = (HANDLE)_beginthreadex(NULL, 0, &TestFunc::tRunLauncher, this, 0, &thID)) == 0) {
return FALSE;
}
return TRUE;
}
/////////////////////////
// スレッド
void TestFunc::ThreadRun(void)
{
ras.Sprite(ene.d, ene.m, ene.s);//処理の重い画像処理
thflag = true;
_endthreadex(0);
}
// これがクラス
class TestFunc : public CTEST01
{
bool rasf;
bool thflag;
WORD set;
EffectRaster ras;
double RX, RY;
HANDLE hThread;
static UINT WINAPI tRunLauncher(void* vp) {
reinterpret_cast<TestFunc*>(vp)->ThreadRun();
return 0;
}
void ThreadRun();
BOOL ThreadRegist();
public:
TestFunc(double x, double y, WORD type);
};
このオブジェクトを多くて5~6個作っています。
上記の場所をスレッドにしない場合、逆に処理が軽くなるんです。
スレッドが5から6個でも処理が重ければ影響が出るのでしょうか?
しかしそれでもスレッドにしない場合より重くなる理由が分からないでいます。
詳しい方がいらっしゃいましたらどうぞよろしくお願い致します。 m( )m