View Full Version : مبتدی: استفاده از Multi Threading در برنامه
Collector
جمعه 13 دی 1392, 20:40 عصر
سلام
من یک تابع دارم که داخل یک کلاس است میخوام به صورت موازی اجرا بشه کدم را این طوری نوشتم اما موقع اجرا خطا میده
HANDLE hThread;
unsigned threadID;
cout<<(hThread = (HANDLE)_beginthreadex(NULL, 0, Keyboard::StaticGeyKeyboard, NULL, 0, &threadID));
این را هم داخل کلاس نوشتم
static unsigned __stdcall StaticGeyKeyboard(void * pThis)
{
Keyboard * pthX = (Keyboard*)pThis;
pthX->GeyKeyboard();
return 1;
}
114802
Collector
جمعه 20 دی 1392, 11:27 صبح
برنامه را این طوری نوشتم
ولی انگار توابع موازی با هم اجرا نمیشوند و یکی پس از دیگری اجرا میشود انگار دو تابع را پشت هم فراخوانی کنیم
#include "stdafx.h"
#include <iostream>
#include <windows.h>
using namespace std;
class thread_data
{
public:
thread_data()
{
for (int i=0; i< 5; i++)
cout << "thread 1"<< endl;
}
};
class thread_data2
{
public:
thread_data2()
{
cout << "thread 2"<< endl;
}
};
DWORD WINAPI thread_func(LPVOID lpParameter)
{
thread_data *td = (thread_data*)lpParameter;
return 0;
}
DWORD WINAPI thread_func2(LPVOID lpParameter)
{
thread_data2 *td2 = (thread_data2*)lpParameter;
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
for (int i=0; i< 10; i++)
{
CreateThread(NULL, 0, thread_func, new thread_data() , 0, 0);
CreateThread(NULL, 0, thread_func2, new thread_data2() , 0, 0);
}
system("Pause");
return 0;
}
mafia1990
جمعه 20 دی 1392, 12:11 عصر
CreateThread( NULL,0,(LPTHREAD_START_ROUTINE) thread_func,(LPVOID)arg, NULL,NULL)
ببین حله؟
Collector
جمعه 20 دی 1392, 19:08 عصر
CreateThread( NULL,0,(LPTHREAD_START_ROUTINE) thread_func,(LPVOID)arg, NULL,NULL)
ببین حله؟
نه بازم همون طوریه
برای مشکل اول راه پست اول راه حلی ندارید؟
باید بگرم که کلاس ها داخل dll هستند
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.