初始化临界区

(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对比的更多相关文章

  1. 【av68676164(p31-p32)】Windows和Linux同步机制

    4.6.1 Windows同步机制 临界区(CRITICAL_SECTION) 在进程内使用,保证仅一个线程可以申请到该对象 临界区内是临界资源的访问 相关的API函数 初始化临界区 WINBASEA ...

  2. windows、Linux同步外网NTP服务器时间

    配置 Windows 时间服务以使用外部时间源 要将内部时间服务器配置为与外部时间源同步,请使用以下方法之一: 软件自动配置  Windows 时间服务 若要自动修复此问题,请单击“下载”按钮. 在“ ...

  3. rsync在windows和linux同步数据的配置过程

    centos7.0安装rsync3.0.9-17.el7 yum install rsync ===================================================== ...

  4. [转帖]Windows和Linux对决(多进程多线程)

    Windows和Linux对决(多进程多线程) https://blog.csdn.net/world_2015/article/details/44920467 太长了 还没看完.. 还是没太理解好 ...

  5. Linux与Windows的设备驱动模型对比

    Linux与Windows的设备驱动模型对比 名词缩写: API 应用程序接口(Application Program Interface ) ABI 应用系统二进制接口(Application Bi ...

  6. Windows 和 Linux 的IPC API对应表

    原文出处:http://blog.csdn.net/zhengdy/article/details/5485472                                           ...

  7. Windows 下目录及文件向Linux同步

    本文解决的是Windows 下目录及文件向Linux同步的问题,Windows向 Windows同步的请参考:http://www.idcfree.com/article-852-1.html 环境介 ...

  8. linux同步windows的时间

    找了很多的资料,都没有windows做时间服务,linux同步windows的时间的,最后自己找了一些软件,终于搞定了,写出来给大家共享,以免大家多走弯路 首先在http://www.meinberg ...

  9. Windows与Linux的命令行命令对比

    Windows与Linux的命令行命令对比 * Windows不区分大小写,Linux区分大小写的. sn DOS Command UNIX Equivalent Effect 影响 1 ASSIGN ...

随机推荐

  1. 页面全部加载完毕和页面dom树加载完毕

    dom树加载完毕 $(document).ready()//原生写法document.ready = function (callback) {            ///兼容FF,Google   ...

  2. 分页搜索查询sql

    select * from (select t.*,rownum no from " + table + " t where scbj=0)where (no>(" ...

  3. ORACLE SQL单行函数(一)【weber出品必属精品】

    1.SUBSTR:求父串中的子串 SUBSTR('HelloWorld',1,5) 1:代表子串的起始位置,如果为正,正数,如果为负,倒数 5:代表字串的终止位置,只能向右数,可以省略,如果省略就是数 ...

  4. setInterval()、clearInterval()、setTimeout()和clearTimeout()js计数器方法

    原文地址:http://caibaojian.com/setinterval-settimeout.html window.setInterval()方法 介绍 周期性地调用一个函数(function ...

  5. artDialog的几种基本使用

    1.confirm形式 var dialog=art.dialog({ lock:true, content: '请确认,您是否要删除选中的用吗?', icon: 'question', ok: fu ...

  6. Java学习笔记--泛型

    一个泛型类就是具有一个或者多个类型变量的类. 我们可以只关注泛型,而不会为数据存储的细节而烦恼 . java泛型(一).泛型的基本介绍和使用 http://blog.csdn.net/lonelyro ...

  7. [LA] 3644 - X-Plosives [并查集]

    A secret service developed a new kind of explosive that attain its volatile property only when a spe ...

  8. Netbeans7.4+Weblogic11g+Spring3.2.4操作JdbcTemplate

    第一步:在Weblgic11g管理界面:http://localhost:7001/console 中建立数据源,我建立的jndi名称为:sjsstjndi 第二步:需要导入spring的以下包:使用 ...

  9. 字符串转换为float<1>

    zjtest7-frontend:/usr/local/logstash-2.3.4/config# cat g01.conf input {stdin{}} filter { grok { matc ...

  10. C# 文件夹操作

    追加文件    StreamWriter sw = File.AppendText(Server.MapPath(] != Path.DirectorySeparatorChar)         a ...