[C++] socket - 4 [线程同步 简单例子]
/*WINAPI 线程同步*/
#include<windows.h>
#include<stdio.h>
DWORD WINAPI myfun1(LPVOID lpParameter);//声明线程函数
DWORD WINAPI myfun2(LPVOID lpParameter);
static int a=;
CRITICAL_SECTION Section;
int main()
{
HANDLE h1,h2;//定义句柄变量
InitializeCriticalSection(&Section);
h1=::CreateThread(NULL,,myfun1,NULL,,NULL);//创建线程1
printf("线程1开始运行!\r\n");
h2=::CreateThread(NULL,,myfun2,NULL,,NULL);//创建线程2
printf("线程2开始运行!\t\n");
::CloseHandle(h1);//关闭线程句柄对象
::CloseHandle(h2);
::Sleep();
printf("正常退出请按'q'\r\n");
if(getchar()=='q')
{
DeleteCriticalSection(&Section);
}
else
{
return ;
}
}
DWORD WINAPI myfun1(LPVOID lpParameter)//线程函数
{
while()
{
EnterCriticalSection(&Section);
a++;
if(a<)
{
printf("线程1正在计数%d\r\n",a);
LeaveCriticalSection(&Section);
::Sleep();
}
else
{
LeaveCriticalSection(&Section);
break;
}
}
return ;
}
DWORD WINAPI myfun2(LPVOID lpParameter)
{
while()
{
EnterCriticalSection(&Section);
a++;
if(a<)
{
printf("线程2正在计数%d\r\n",a);
LeaveCriticalSection(&Section);
::Sleep();
}
else
{
LeaveCriticalSection(&Section);
break;
}
}
return ;
}
[C++] socket - 4 [线程同步 简单例子]的更多相关文章
- Linux多线程及线程同步简单实例
一.多线程基本概念 1. 线程的基本概念 ① 线程就是轻量级的进程 ②线程和创建他的进程共享代码段.数据段 ③线程拥有自己的栈 2. 在实际应用中,多个线程往往会访问同一数据或资源,为避免线程之间相互 ...
- Delphi多线程的OnTerminate属性(附加一个关于临界区线程同步的例子)
首先看TThread源码中关于OnTerminate的代码: public .... property OnTerminate: TNotifyEvent read FOnTerminate writ ...
- 【Linux】Mutex互斥量线程同步的例子
0.互斥量 Windows下的互斥量 是个内核对象,每次WaitForSingleObject和ReleaseMutex时都会检查当前线程ID和占有互斥量的线程ID是否一致. 当多次Wait**时就 ...
- 【Linux】Semaphore信号量线程同步的例子
0. 信号量 Linux下的信号量和windows下的信号量稍有不同. Windows Windows下的信号量有一个最大值和一个初始值,初始值和最大值可以不同. 而且Windows下的信号量是一个 ...
- NodeJS+Express+Socket.io的一个简单例子
关键字:NodeJS,Express,Socket.io. OS:Windows 8.1 with update pro. 1.安装NodeJS:http://nodejs.org/. 2.初始化一个 ...
- java 线程池简单例子
package com.hra.riskprice; import com.hra.riskprice.SysEnum.Factor_Type; import com.hra.riskprice.po ...
- Python socket套接字简单例子
- window下线程同步之(Event Objects(事件))
Event 方式是最具弹性的同步机制,因为他的状态完全由你去决定,不会像 Mutex 和 Semaphores 的状态会由类似:WaitForSingleObject 一类的函数的调用而改变,所以你可 ...
- AgileEAS.NET SOA 中间件平台.Net Socket通信框架-完整应用例子-在线聊天室系统-下载配置
一.AgileEAS.NET SOA中间件Socket/Tcp框架介绍 在文章AgileEAS.NET SOA 中间件平台Socket/Tcp通信框架介绍一文之中我们对AgileEAS.NET SOA ...
随机推荐
- 一步步编写avalon组件01:弹出层组件
avalon2已经稳定下来,是时候教大家如何使用组件这个高级功能了. 组件是我们实现叠积木开发的关键. avalon2实现一个组件非常轻松,并且如何操作这个组件也比以前的avalon2,还是react ...
- Java日志系统框架的设计与实现
推荐一篇好的文章介绍java日志系统框架的设计的文章:http://soft.chinabyte.com/database/438/11321938.shtml 文章内容总结: 日志系统对跟踪调试.程 ...
- 实现textarea限制输入字数(包含中文只能输入10个,全ASCII码能够输入20个)
document.getElementById("<%=textBox1.ClientID %>").value 实现textarea限制输入字数(包含中文只能输入10 ...
- globals()
[globals() ] globals() Return a dictionary representing the current global symbol table. This is alw ...
- SpringBean
springBean <bean id="user" class="..."/> 默认是单例的. 如果要改成多例的则<bean id=&qu ...
- hdu 1573 X问题 (非互质的中国剩余定理)
X问题 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- C# 获取地址栏的地址(URL)
原文地址:http://blog.csdn.net/dingxingmei/article/details/8448009 设当前页完整地址是:http://www.jb51.net/aaa/bbb. ...
- Java swing项目-图书管理系统(swing+mysql+jdbc)
(一)项目功能分析 该项目是设计一个图书管理系统,主要包含的内容有: (1)管理员登陆界面 ->信息录入 ->登录 ->重置 (2)图书管理系统总界面 ->子界面菜单: 1)图 ...
- OA项目之分页
using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace Digit ...
- Linux常用命名
一:命名基本格式 [root@localhost ~]# root: 用户名 localhost: 主机名 (windows在局域网,不能有相同的主机名) ~:当前所在位置 (家目录) root ...