多线程互斥 thread1{ // do something ...}一个进程中同时创建了多个thread1 如何使每个thread1执行完do something 其他的thread1才可以执行 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 给个例子给你#include "stdafx.h"#include <windows.h>#include <stdio.h>HANDLE hFile;//全局对象//定义临界区对象CRITICAL_SECTION cs;//写文件线程函数DWORD WINAPI Thread(LPVOID lpParam){ //得到是哪个线程 int n=(int)lpParam; DWORD dwWrite; for (int i=0;i<10000;i++) { //进入临界区 EnterCriticalSection(&cs); char Data[512]="------------------------by 认真的雪------------------------\r\n-------------------http://www.nohack.cn-------------------"; //写入文件 WriteFile(hFile,&Data,strlen(Data),&dwWrite,NULL); //出临界区 LeaveCriticalSection(&cs); } //输出哪个线程运行结束 printf("第%d号线程结束运行\n",n); return 0;}int main(int argc, char* argv[]){ //创建文件 hFile=CreateFile("c:\\hack.txt",GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL); if(hFile==INVALID_HANDLE_VALUE) { printf("CreateFile Error\n"); return 0; } DWORD ThreadId; HANDLE hThread[5]; //初始化临界区对象 InitializeCriticalSection(&cs); //创建5个线程 for(int i=0;i<5;i++) { hThread[i]=CreateThread(NULL,NULL,Thread,LPVOID(i+1),0,&ThreadId); printf("第%d号线程创建成功\n",i+1); } //等待五个线程运行结束 WaitForMultipleObjects(5,hThread,true,INFINITE); //删除临界区对象 DeleteCriticalSection(&cs); //关闭文件句柄 CloseHandle(hFile); return 0;} 我的第一个软件,大家多提意见。 请问高手指点向FTP传送文件 怎样用VBscript脚本控制我用MFC写的界面啊? xml的解析问题,急 如何构造这个struct对象 如何让两个类互相引用 高分求救,关于句柄的关闭 说能谈谈CBITMAP和BITMAP的区别吗? vc 读取A.txt的数据,写入数据库 求教各位大神关于ListCtrl的问题 最简单的动态链接库出错,解决的话12点给分 网络编程的时候协议头里要带一个头大小的成员是为什么?
#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
HANDLE hFile;//全局对象
//定义临界区对象
CRITICAL_SECTION cs;
//写文件线程函数
DWORD WINAPI Thread(LPVOID lpParam)
{
//得到是哪个线程
int n=(int)lpParam;
DWORD dwWrite;
for (int i=0;i<10000;i++)
{ //进入临界区
EnterCriticalSection(&cs);
char Data[512]="------------------------by 认真的雪------------------------\r\n-------------------http://www.nohack.cn-------------------";
//写入文件
WriteFile(hFile,&Data,strlen(Data),&dwWrite,NULL);
//出临界区
LeaveCriticalSection(&cs);
}
//输出哪个线程运行结束
printf("第%d号线程结束运行\n",n);
return 0;
}
int main(int argc, char* argv[])
{
//创建文件
hFile=CreateFile("c:\\hack.txt",GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
if(hFile==INVALID_HANDLE_VALUE)
{
printf("CreateFile Error\n");
return 0;
}
DWORD ThreadId;
HANDLE hThread[5];
//初始化临界区对象
InitializeCriticalSection(&cs);
//创建5个线程
for(int i=0;i<5;i++)
{
hThread[i]=CreateThread(NULL,NULL,Thread,LPVOID(i+1),0,&ThreadId);
printf("第%d号线程创建成功\n",i+1);
}
//等待五个线程运行结束
WaitForMultipleObjects(5,hThread,true,INFINITE);
//删除临界区对象
DeleteCriticalSection(&cs);
//关闭文件句柄
CloseHandle(hFile);
return 0;
}