c语言多线程实例

c语言多线程实例include stdafx h include windows h include stdio h HANDLEhFile 定义临界区 CRITICAL SECTIONcs DWORDWINAPIT LPVOIDlpPara 得到线程的编号 intn int lpParam DWORDdvWrite for inti 0 i lt 10000 i 进入临界区 En stdio h windows h

在这里插入图片描述

 #include "stdafx.h" #include 
     #include  
     HANDLE hFile; //定义临界区 CRITICAL_SECTION cs; DWORD WINAPI Thread(LPVOID lpParam) { 
    //得到线程的编号 int n = (int)lpParam; DWORD dvWrite; for (int i = 0; i < 10000; i++){ 
    //进入临界区 EnterCriticalSection(&cs); char Data[512] = "\r\n--------------by chen-----------\r\n--------------http://www.baidu.com/--------"; //写入文件 WriteFile(hFile, &Data, strlen(Data), &dvWrite, NULL); //离开临界区 LeaveCriticalSection(&cs); } //输出哪个线程运行结束 printf("the number %d thread run end \n", n); return 0; } int _tmain(int argc, _TCHAR* 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"); } 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("the number %d thread create success!\n", i + 1); } //等待五个线程运行结束 WaitForMultipleObjects(5, hThread, true, INFINITE); //删除临界区对象 DeleteCriticalSection(&cs); //关闭文件句柄 CloseHandle(hFile); system("pause"); return 0; } 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/177042.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午8:27
下一篇 2026年3月26日 下午8:27


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号