windows 和linux 同步api对比
初始化临界区
(win)
InitializeCriticalSection(RTL_CRITICAL_SECTION &rtl_critial_section)
(linux)
pthread_mutexattr_init(&(mutex)->attr);
pthread_mutexattr_settype(&(mutex)->attr, PTHREAD_MUTEX_RECURSIVE);
pthread_mutex_init(&(mutex)->mtx, &(mutex)->attr);
删除临界区
(win)
DeleteCriticalSection(RTL_CRITICAL_SECTION &)
(linux)
pthread_mutex_destroy(pthread_mutex_t &mutex)
进入临界区
(win)
EnterCriticalSection(RTL_CRITICAL_SECTION &rtl_critical_section)
(linux)
pthread_mutex_lock(pthread_mutex_t &mutex)
尝试进入临界区
(win)
TryEnterCriticalSection(RTL_CRITICAL_SECTION &rtl_critical_section )
(linux)
pthread_mutex_trylock(pthread_mutex_t &mutex)
离开临界区
(win)
LeaveCriticalSection(RTL_CRITICAL_SECTION &rtl_critical_section )
(linux)
pthread_mutex_unlock(pthread_mutex_t &mutex)
把目标操作数(第1参数所指向的内存中的数)与一个值(第3参数)比较,如果相等,则用另一个值(第2参数)与目标操作数(第1参数所指向的内存中的数)交换;InterlockedExchange是不比较直接交换。整个操作过程是锁定内存的,其它处理器不会同时访问内存,从而实现多处理器环境下的线程互斥
(win)
InterlockedCompareExchange(Destination, newvalue, oper)
(linux)
__sync_val_compare_and_swap(Destination, oper, newvalue)
v的值原子添加P的大小
(win)
InterlockedExchangeAdd(V, P)
(linux)
__sync_fetch_and_add(V, P)
原子增加一
(win)
InterlockedIncrement(T)
(linux)
__sync_fetch_and_add(T, 1)
原子减少一
(win)
InterlockedDecrement(T)
(linux)
__sync_fetch_and_sub(T, 1)
获取当前线程id
(win)
GetCurrentThreadId()
(linux)
syscall(SYS_gettid)
如果指定一个非零值,函数处于等待状态直到hHandle 标记的对象被触发,或者时间到了。如果dwMilliseconds 为0,对象没有被触发信号,函数不会进入一个等待状态,它总是立即返回。如果dwMilliseconds 为INFINITE,对象被触发信号后,函数才会返回。对应的linux实现使用条件变量
(win)
WaitForSingleObject(event,INFINITE)
(linux)
pthread_mutex_lock( &m_tx );
pthread_cond_wait( &event, &m_tx );
pthread_mutex_unlock( &m_tx );
退出线程(退出参数0)
(win)
ExitThread(0)
(linux)
pthread_exit(0)
设置线程优先级,pthread_setschedparam在多线程开发中经常被使用的,它主要用于设置线程的调用策略和优先级
(win)
SetThreadPriority (handle,nPrioroty)
(linux)
sched_param sp = {nPriority};
if(0 == pthread_setschedparam(m_pid, SCHED_RR, &sp))
{
return true;
}
return false;
获取优先级
(win)
GetThreadPriority( Handle m_hThread )
(linux)
int policy;
sched_param sp;
pthread_getschedparam(m_pid, &policy, &sp))
sp.sched_priority;
初始化互斥量
(linux)
pthread_mutex_init(pthread_mutex_t &mutex),0)
初始化条件变量
pthread_cond_init(&cond,0)
删除互斥量
pthread_mutex_destroy(pthread_mutex_t &mutex))
删除条件变量
(linux)
pthread_cond_destroy(pthread_cond_t &cond)
向条件变量发起信号
(linux)
pthread_cond_signal(pthread_cond_t &cond)
挂起等待结束(无限等待) true在阻塞期间允许进入警告状态(windows才有)
(win)
WaitForSingleObject Ex(handle, INFINITE,true)
(linux)
pthread_join (pthread_t thid, void ** ret_val) 常用pthread_join(pid,0)
windows 和linux 同步api对比的更多相关文章
- 【av68676164(p31-p32)】Windows和Linux同步机制
4.6.1 Windows同步机制 临界区(CRITICAL_SECTION) 在进程内使用,保证仅一个线程可以申请到该对象 临界区内是临界资源的访问 相关的API函数 初始化临界区 WINBASEA ...
- windows、Linux同步外网NTP服务器时间
配置 Windows 时间服务以使用外部时间源 要将内部时间服务器配置为与外部时间源同步,请使用以下方法之一: 软件自动配置 Windows 时间服务 若要自动修复此问题,请单击“下载”按钮. 在“ ...
- rsync在windows和linux同步数据的配置过程
centos7.0安装rsync3.0.9-17.el7 yum install rsync ===================================================== ...
- [转帖]Windows和Linux对决(多进程多线程)
Windows和Linux对决(多进程多线程) https://blog.csdn.net/world_2015/article/details/44920467 太长了 还没看完.. 还是没太理解好 ...
- Linux与Windows的设备驱动模型对比
Linux与Windows的设备驱动模型对比 名词缩写: API 应用程序接口(Application Program Interface ) ABI 应用系统二进制接口(Application Bi ...
- Windows 和 Linux 的IPC API对应表
原文出处:http://blog.csdn.net/zhengdy/article/details/5485472 ...
- Windows 下目录及文件向Linux同步
本文解决的是Windows 下目录及文件向Linux同步的问题,Windows向 Windows同步的请参考:http://www.idcfree.com/article-852-1.html 环境介 ...
- linux同步windows的时间
找了很多的资料,都没有windows做时间服务,linux同步windows的时间的,最后自己找了一些软件,终于搞定了,写出来给大家共享,以免大家多走弯路 首先在http://www.meinberg ...
- Windows与Linux的命令行命令对比
Windows与Linux的命令行命令对比 * Windows不区分大小写,Linux区分大小写的. sn DOS Command UNIX Equivalent Effect 影响 1 ASSIGN ...
随机推荐
- MongoDB 和 mySql 的关系
1. mysql 和 MongoDb MySQL与MongoDB都是开源的常用数据库,但是MySQL是传统的关系型数据库,MongoDB则是非关系型数据库,也叫文档型数据库,是一种NoSQL的数据库. ...
- Angular单页应用&AngularJS内部实现原理
回顾 自定义指令 登录后获取登录信息session 首先在登录验证的时候保存一个user 在学生管理页面中运用ajax调用获取到登录的用户信息 对注销按钮添加点击事件:调用ajax在表现层给user赋 ...
- linq读书笔记1-linq 初步
至于linq是什么之类的已经有过太多的文章介绍,亦不清楚的胡朋友可以自己搜索一下便可以得到大量的答案 为了体验linq究竟能带给我们什么体验,我们直接从代码入手: string[] words = n ...
- OpenGL ES 2.0 限定符
限定符 说明 作用 attribute 一般用于各个顶点各不相同的量,如顶点位置.颜色等 属性限定符,修饰的变量用来接收渲染管线传递进顶点着色器的当前顶点的各种属性值. 只能用来修饰符点数标量,浮点数 ...
- 基于nginx的rtmp的服务器(nginx-rtmp-module)
一,首先下载安装nginx需要依赖的库文件: 1.1,选定源码目录 选定目录 /usr/local/RTMP cd /usr/local/RTMP 1.2,安装PCRE库 cd /usr/local/ ...
- BZOJ 1003 物流运输 (动态规划 SPFA 最短路)
1003: [ZJOI2006]物流运输 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 5590 Solved: 2293 [Submit][Stat ...
- MySQL指令记录(Wampserve环境)
1.MySQL在Wampserve中的默认用户名为'root',默认密码为空: 2.显示所有数据库 show databases; 3.切换数据库 use DATABASE_NAME; 4.列出所有表 ...
- trim()方法去除字符串首尾空格
trim()方法去除字符串首尾空格 1.原生js Function trimStr(str){ Return str.r ...
- LESSCSS
LESSCSS应需求而生 CSS 的语法相对简单,对使用者的要求较低,但同时也带来一些问题:CSS 需要书写大量看似没有逻辑的代码,不方便维护及扩展,不利于复用,尤其对于非前端开发工程师来讲,往往会因 ...
- 织梦dedecms5.7后台进去就卡死解决方法
症状:进入dede后台点击菜单后,浏览器进入假死状态要等好久才能反应过来. 解决方式:1.打开后台目录dede/templets/ 2.找到index_body.htm文件中的第25行至第35行部分屏 ...