zoukankan      html  css  js  c++  java
  • C线程同步/异步

     1 #include<windows.h>
     2 #include<stdio.h>
     3 #include<string.h>
     4 //#include <afxmt.h>
     5 #define T_MAX 100
     6 int  ticket;
     7 CRITICAL_SECTION CriticalSection;
     8 /* //售票线程
     9 DWORD WINAPI SaleThread(LPVOID lp)
    10 {
    11 int n = (int) lp;
    12 while (ticket > 0)
    13 {
    14 printf("SaleThread%d sell %dth ticket
    ", n, T_MAX-ticket+1);
    15 ticket--;
    16 Sleep(500);
    17 }
    18 return 0;
    19 }
    20 
    21 void MyThread()
    22 {
    23 HANDLE handle1,handle2,handle3,handle4,handle5;
    24 //5个售票线程
    25 handle1 = CreateThread(NULL,NULL,SaleThread,(void*)1,NULL,NULL);
    26 handle2 = CreateThread(NULL,NULL,SaleThread,(void*)2,NULL,NULL);
    27 handle3 = CreateThread(NULL,NULL,SaleThread,(void*)3,NULL,NULL);
    28 handle4 = CreateThread(NULL,NULL,SaleThread,(void*)4,NULL,NULL);
    29 handle5 = CreateThread(NULL,NULL,SaleThread,(void*)5,NULL,NULL);
    30 }
    31 */
    32 
    33 //售票线程
    34 DWORD WINAPI SaleThread(LPVOID lp)
    35 {
    36 int n = (int) lp;
    37 while (ticket > 0)
    38 { //临界区同步
    39 EnterCriticalSection(&CriticalSection);
    40 printf("SaleThread%d sell %dth ticket
    ", n, T_MAX-ticket+1);
    41 ticket--;
    42 LeaveCriticalSection(&CriticalSection);
    43 Sleep(500);
    44 }
    45 return 0;
    46 }
    47 void MyThread()
    48 {
    49 HANDLE handle1,handle2,handle3,handle4,handle5;
    50 //5个售票线程
    51 handle1 = CreateThread(NULL,NULL,SaleThread,(void*)1,NULL,NULL);
    52 handle2 = CreateThread(NULL,NULL,SaleThread,(void*)2,NULL,NULL);
    53 handle3 = CreateThread(NULL,NULL,SaleThread,(void*)3,NULL,NULL);
    54 handle4 = CreateThread(NULL,NULL,SaleThread,(void*)4,NULL,NULL);
    55 handle5 = CreateThread(NULL,NULL,SaleThread,(void*)5,NULL,NULL);
    56 }
    57 
    58 int main(int argc, char* argv[])
    59 {
    60   ticket=100;
    61 //创建临界区对象
    62 InitializeCriticalSection(&CriticalSection);
    63 if(ticket>0)
    64 MyThread();
    65 Sleep(50000);
    66 //删除临界区对象
    67 DeleteCriticalSection(&CriticalSection);
    68 return 0;
    69 }
    View Code
  • 相关阅读:
    Codeforces Round #596 (Div. 2, based on Technocup 2020 Elimination Round 2)
    Codeforces Round #592 (Div. 2)
    日常杂谈
    vc_redist x64 或者x86下载地址
    windows terminal编译实录
    刷机,twrp,安装xposed
    博客迁移公告
    tcpdump实用笔记
    分享一篇企鹅的暑期实习生技术面经验
    visudo使用笔记
  • 原文地址:https://www.cnblogs.com/gongxijun/p/4016389.html
Copyright © 2011-2022 走看看