| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 308 人关注过本帖
标题:多线程问题,求高手帮忙看看。
只看楼主 加入收藏
qb3276
Rank: 2
等 级:论坛游民
帖 子:24
专家分:42
注 册:2010-10-25
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
多线程问题,求高手帮忙看看。
#include <iostream.h>
#include <windows.h>

DWORD WINAPI FunPro1(
  LPVOID lpParameter   // thread data
);

DWORD WINAPI FunPro2(
  LPVOID lpParameter   // thread data
);

int tickes = 100;

CRITICAL_SECTION g_cs;

void main()
{
    HANDLE hThread1 = CreateThread(NULL, 0, FunPro1, NULL, 0, NULL);
    HANDLE hThread2 = CreateThread(NULL, 0, FunPro2, NULL, 0, NULL);
    CloseHandle(hThread1);
    CloseHandle(hThread2);

    InitializeCriticalSection(&g_cs);

    Sleep(4000);
   
    DeleteCriticalSection(&g_cs);

}

DWORD WINAPI FunPro1(
  LPVOID lpParameter   // thread data
)
{
    while(TRUE)
    {
        EnterCriticalSection(&g_cs);
        if(tickes > 0)
        {
            Sleep(1);
            cout<<"Thread1 sell tickes..."<< tickes--<<endl;
        }
        else
        {
            break;
        }

        LeaveCriticalSection(&g_cs);
    }
    return 0;
}

DWORD WINAPI FunPro2(
  LPVOID lpParameter   // thread data
)
{
    while(TRUE)
    {        
        EnterCriticalSection(&g_cs);
        if(tickes > 0)
        {
            Sleep(1);
            cout<<"Thread2 sell tickes..."<< tickes--<<endl;
        }
        else
        {
            break;
        }
        LeaveCriticalSection(&g_cs);
    }
    return 0;
}


这个程序用多线程模拟售票系统,但是执行结果只看到一个线程运行,而且有时候会出现错误。代码哪里出了错误??实在找不出什么原因。

搜索更多相关主题的帖子: 4000 void include thread 多线程 
2011-09-10 11:06
yuccn
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:20 
孙鑫的那本书上的例子。呵呵

void main()
{
    InitializeCriticalSection(&g_cs);  // 把初始化提前就行了

    HANDLE hThread1 = CreateThread(NULL, 0, FunPro1, NULL, 0, NULL);
    HANDLE hThread2 = CreateThread(NULL, 0, FunPro2, NULL, 0, NULL);

    CloseHandle(hThread1);
    CloseHandle(hThread2);

    Sleep(4000);   

    DeleteCriticalSection(&g_cs);
}

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2011-09-10 13:04
qb3276
Rank: 2
等 级:论坛游民
帖 子:24
专家分:42
注 册:2010-10-25
收藏
得分:0 
回复 2楼 yuccn
好像懂了点,但是输出的结果很大概率上是一个线程在执行,我在想是不是和CPU时间片有关呢?还是因为CPU是双核四线程??总之谢了哈!
2011-09-10 21:15
快速回复:多线程问题,求高手帮忙看看。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014377 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved