首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

线程中可不可以利用全局变量来传递消息,并控制线程运行,请大家指导解决思路

2012-02-19 
线程中可不可以利用全局变量来传递消息,并控制线程运行,请大家指导我主要是通过全局变量来控制数据在主程

线程中可不可以利用全局变量来传递消息,并控制线程运行,请大家指导
我主要是通过全局变量来控制数据在主程序与线程之间进行传递,并互斥访问相互控制,不知道对不对,我也是刚接触线程,希望各位,指点一二,先谢了
简单写了一段代码:
#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的还是加锁控制吧!

热点排行