您的位置:首页 > 编程语言 > C语言/C++

c++多线程,2个线程模拟卖火车票的小程序

2014-11-18 11:56 351 查看
如果遇到“CreateMutexW”: 不能将参数 3 从“const char [8]”转换为“LPCWSTR”的错误

可以在vs2010中,将项目的字符集,从“使用unicode字符集”改为“使用多字节字符集”

#include <windows.h>

#include <iostream.h>

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

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

int index=0;

int tickets=10;

HANDLE hMutex;

void main()

{

HANDLE hThread1;

HANDLE hThread2;

//创建线程

hThread1=CreateThread(NULL,0,Fun1Proc,NULL,0,NULL);

hThread2=CreateThread(NULL,0,Fun2Proc,NULL,0,NULL);

CloseHandle(hThread1);

CloseHandle(hThread2);

//创建互斥对象

hMutex=CreateMutex(NULL,TRUE,"tickets");

if (hMutex)

{

if (ERROR_ALREADY_EXISTS==GetLastError())

{

cout<<"only one instance can run!"<<endl;

return;

}

}

WaitForSingleObject(hMutex,INFINITE);

ReleaseMutex(hMutex);

ReleaseMutex(hMutex);



Sleep(4000);

}

//线程1的入口函数

DWORD WINAPI Fun1Proc(LPVOID lpParameter)//thread data

{

while (true)

{

ReleaseMutex(hMutex);

WaitForSingleObject(hMutex,INFINITE);

if (tickets>0)

{

Sleep(1);

cout<<"thread1 sell ticket :"<<tickets--<<endl;

}

else

break;

ReleaseMutex(hMutex);

}

return 0;

}

//线程2的入口函数

DWORD WINAPI Fun2Proc(LPVOID lpParameter)//thread data

{

while (true)

{

ReleaseMutex(hMutex);

WaitForSingleObject(hMutex,INFINITE);

if (tickets>0)

{

Sleep(1);

cout<<"thread2 sell ticket :"<<tickets--<<endl;

}

else

break;

ReleaseMutex(hMutex);

}



return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐