注册 登录
编程论坛 VC++/MFC

关于多线程问题

佛前油灯 发布于 2013-05-16 19:27, 551 次点击
#include<stdio.h>
#include<Windows.h>
int num=0;
CRITICAL_SECTION gs;
DWORD WINAPI ThreadProc(LPVOID lpParam)
{
    int ntmp=0;
    for(int i=0;i<10;i++)
    {
        EnterCriticalSection(&gs);
        ntmp=num;
        ntmp++;
        Sleep(1);
        num=ntmp;
        LeaveCriticalSection(&gs);
    }
    return 0;
}
int main(int argc,char*argv[])
{
    InitializeCriticalSection(&gs);
    HANDLE hThread[10]={0};
    for( int i=0;i<10;i++)
    {
        hThread[i]=CreateThread(NULL,0,ThreadProc,NULL,0,NULL);
        if(hThread[i]=NULL)
        {
            printf("%d createthread error \r\n",i);
        }
    }
    WaitForMultipleObjects(10,hThread,TRUE,INFINITE);
    printf("%d \r\n",num);
    for(i=0;i<10;i++)
    {
        CloseHandle(hThread[i]);
    }
    DeleteCriticalSection(&gs);
    return 0;
}
我的电脑输出时0,但是书上说结果应该是100,哪位高手能帮小弟看看?
4 回复
#2
yuccn2013-05-16 21:52
if(hThread[i]=NULL)

低级错误,下次 注意下
#3
佛前油灯2013-05-16 22:03
回复 2楼 yuccn
兄弟 那个我还是有点不懂 我新手 能讲详细点吗?
#4
yuccn2013-05-16 22:47
if(hThread[i]=NULL)
改成
if(hThread[i]==NULL)

#5
佛前油灯2013-05-17 15:49
回复 4楼 yuccn
谢谢,兄弟!!!
1