设为首页 加入收藏

TOP

Linux下关于互斥锁及同步的移植
2014-11-24 02:09:09 来源: 作者: 【 】 浏览:2
Tags:Linux 关于 同步 移植

将Win32程序关于多线程的内容移植到Linux下面,不能简单的按照函数对应来移植。不过通过下面的对应关系,再加上你对这些模式的深入了解,相信会移植的很成功。


信号量


Windows 信号量是一些计数器变量,允许有限个线程/进程访问共享资源。Linux POSIX 信号量也是一些计数器变量,可以用来在 Linux 上实现 Windows 上的信号量功能。


信号量的类型: Windows 提供了有名(named)信号量和无名(unnamed)信号量。有名信号量可以在进程之间进行同步。在 Linux 上,在相同进程的不同线程之间,则只使用 POSIX 信号量。在进程之间,可以使用 System V 信号量。


等待函数中的超时: 当在一个等待函数中使用时,可以为 Windows 信号量对象指定超时值。在 Linux 中,并没有提供这种功能,只能通过应用程序逻辑处理超时的问题。


创建信号量


在 Windows 中,可以使用 CreateSemaphore() 创建或打开一个有名或无名的信号量。


HANDLE CreateSemaphore(


LPSECURITY_ATTRIBUTES lpSemaphoreAttributes,


LONG lInitialCount,


LONG lMaximumCount,


LPCTSTR lpName


);


在这段代码中:


lpSemaphoreAttributes 是一个指向安全性属性的指针。如果这个指针为空,那么这个信号量就不能被继承。


lInitialCount 是该信号量的初始值。


lMaximumCount 是该信号量的最大值,该值必须大于 0。


lpName 是信号量的名称。如果该值为 NULL,那么这个信号量就只能在相同进程的不同线程之间共享。否则,就可以在不同的进程之间进行共享。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Linux下如何正确地kill java进程 下一篇Java句柄以及对象的比较

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: