线程中可不可以利用全局变量来传递消息,并控制线程运行,请大家指导
我主要是通过全局变量来控制数据在主程序与线程之间进行传递,并互斥访问相互控制,不知道对不对,我也是刚接触线程,希望各位,指点一二,先谢了
简单写了一段代码:
#define START_THREAD 0
#define STOP_THREAD 1
#define EXIT_THREAD 2
struct ThreadInfo
{
INT iThreadState;//线程状态
char *pcData; //线程中需要处理的数据
}threadInfo;
ThreadFunc(LPVOID lpParam)
{
INT *piState = (INT*)lpParam;
while (TRUE)
{ if (*piState == START_THREAD)
{
.....//对threadInfo.pcData进行处理
*piState == STOP_THREAD;
}
else if (*piState == EXIT_THREAD)
break;//退出线程
}
}
MainFunc()//主程序
{
char tempData[100];
threadInfo.iThreadState = START_THREAD;
threadInfo.pcData = tempData;
AfxBeginThread(ThreadFunc,&iThreadState);
while (TRUE)
{
if (iThreadState == STOP_THREAD)
{
.... //处理由线程得到的数据threadInfo.pcData
iThreadState = START_THREAD;
}
}
}
[解决办法]
线程里要用Sleep延时或WaitForSingleObject,避免死循环
[解决办法]
老大你好好看看线程方面的书,向你那么写就是死循环
使用WaitForSingleObject
[解决办法]
貌似单核CPU是可以的!
双核的或多CPU的还是加锁控制吧!