马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
<P> </P>
<DIV class=blockcode>
<BLOCKQUOTE>
<P>[hide] </P>
<DIV class=blockcode>
<BLOCKQUOTE>
<DIV class=blockcode>
<BLOCKQUOTE>
<P>#include "windows.h"</P>
<P>#include "stdio.h"
#define 线程数目 10 //可以自己修改
/* 变量 */
HANDLE *线程句柄 = NULL;
HANDLE 互斥对象 = NULL;
int 测试 = 1;
/* 函数声名 */
void 线程函数(int 序号);
int _tmain(int argc, _TCHAR* argv[])
{
printf("多线程示例(互斥对象) By::迷雾少年\n");
/* 分配内存 ... */
线程句柄 = new HANDLE [线程数目];
//互斥对象 = new HANDLE [线程数目];
/*初始化=好习惯=*/
memset(线程句柄,0,线程数目 * sizeof(HANDLE));
互斥对象 = ::CreateMutex(NULL,false,NULL);
for (int i = 0; i < 线程数目; i++)
{
/* 创建线程 */ //返回值:函数成功,返回线程句柄;函数失败返回false。若不想返回线程ID,设置值为NULL
线程句柄[i] = ::CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)线程函数,(LPVOID)i,NULL,NULL);
/* 判断线程句柄 */
if(!线程句柄[i]) /*创建失败*/
printf("%d 号线程创建失败! 错误代码:%d\n",i,::GetLastError());
}
Sleep(2000);
/* 清除内存...... */
delete []线程句柄;
return 0;
}
/*不解释*/
void 线程函数(int 序号)
{
DWORD 等待结果 = NULL;
等待结果 = WaitForSingleObject(互斥对象,INFINITE); //等待..............
printf("%d号线程\n",序号);
if(!ReleaseMutex(互斥对象)) //释放...
printf("Release error\n");
}</P>
[/hide]
|