|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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]
|
|