随笔-80  评论-22  文章-0  trackbacks-0

#include <windows.h>
#include 
<iostream.h>

DWORD WINAPI Fun1Proc(LPVOID lpParameter);
DWORD WINAPI Fun2Proc(LPVOID lpParameter);

int index=0;
int tickets=100;
HANDLE hMutex;
void main()
{
    HANDLE hThread1,hThread2;
    hThread1
=CreateThread(NULL,0,Fun1Proc,NULL,0,NULL);
    hThread2
=CreateThread(NULL,0,Fun2Proc,NULL,0,NULL);
    CloseHandle(hThread1);
    CloseHandle(hThread2);
    
    hMutex
=CreateMutex(NULL,FALSE,NULL);
    
//TRUE代表主线程拥有互斥对象 但是主线程没有释放该对象  互斥对象谁拥有 谁释放
    
//FLASE代表当前没有线程拥有这个互斥对象

    Sleep(
4000);

}


DWORD WINAPI Fun1Proc(LPVOID lpParameter)
{
    
while (true)
    
{
        WaitForSingleObject(hMutex,INFINITE);
        
if (tickets>0)
        
{
            cout
<<"t1: "<<tickets--<<endl;
        
        }

        
else
        
{
            
break;
        }

        ReleaseMutex(hMutex);
    }


    
return 0;
}


DWORD WINAPI Fun2Proc(LPVOID lpParameter)
{
    
while (true)
    
{
        WaitForSingleObject(hMutex,INFINITE);
        
if (tickets>0)
        
{
            cout
<<"t2: "<<tickets--<<endl;
        }

        
else
        
{
            
break;
        }

        ReleaseMutex(hMutex);
    }


    
return 0;
}


posted on 2009-07-21 17:06 Bluesea 阅读(16669) 评论(3)  编辑 收藏 引用 所属分类: C/C++

评论:
# re: CreateMutex利用互斥对象实现线程同步实例 2009-11-17 14:11 |
最开始创建mutex的时候,第2个参数是false,则初始状态就是signal的,第一个抢到的线程先执行。  回复  更多评论
  
# re: CreateMutex利用互斥对象实现线程同步实例 2012-06-06 11:24 | una
无法打开包括文件:“iostream.h”: No such file or directory
在vs里运行为什么会出现这个?  回复  更多评论
  
# re: CreateMutex利用互斥对象实现线程同步实例 2012-11-24 22:24 | taow
@una
你估计是用的vs2005或2008吧

iostream.h在VS6.0有。vs2005或2008没有

用 #include<iostream>
using namespace std;  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理