当前位置:  技术问答>linux和unix

windows中的程序移植到linux下,WaitForMultipleObjects如何移植。

    来源: 互联网  发布时间:2017-03-27

    本文导语:  有一个和设备串口通信的动态库,已经有windows版本,已经测试好,很稳定。现在移植到linux下,非常不稳定。获得数据经常失败。请各位大侠指点。 windows下的程序大概如下。 程序有两个线程,a线程不停的轮询串口...

有一个和设备串口通信的动态库,已经有windows版本,已经测试好,很稳定。现在移植到linux下,非常不稳定。获得数据经常失败。请各位大侠指点。

windows下的程序大概如下。
程序有两个线程,a线程不停的轮询串口,读到数据后解析,然后置事件,用SetEvent。
线程b即主线程,阻塞,调用WaitForMultipleObjects,等待事件。等到线程a置的事件后,调用处理函数。处理完了以后,继续阻塞。


如上的程序结构,如何移植到linux下,特别是 SetEvent和WaitForMultipleObjects如何移植。现在移植的一版使用信号量的,很不稳定,经常读数据失败。

|
用信号量,初始化为0,读到数据之后,sem_post
另一个线程调用sem_wait,这个函数返回后,开始处理数据,最后又调用sem_wait,如此循环。
另外,还有更简单的(上面只是为了尽量像windows的行为靠拢):

g_list;

a线程:
轮询串口,读到数据后解析;
lock
g_list.push_back();
unlock

b线程:
lock
g_list.pop_front();
unlock

if (get_some_data)
;
else
sleep(0);

lock和unlock在windows下用临界区,在linux下用mutex

|
SetEvent对应linux上的pthread_cond_wait/pthread_cond_signal,触发条件通知。
WaitForMultipleObjects对应linux上的sem_wait,等待多个信号。

    
 
 

您可能感兴趣的文章:

  • WINDOWS GDI程序如何移植到LINUX下?望高手们赐教!!!
  • 征将linux 的程序移植到 windows的方案
  • 关于windows代码向linux移植的问题
  • Nginx的Windows移植版本 Ngwsx
  • 请大家帮忙提供资料:如何将windows系统服务程序移植为linux系统服务?
  • Traceroute的Windows移植版本 ftrace
  • 菜鸟提问:怎么把linux os下的mysql移植到windows os下?
  • 新手求教——windows程序移植到unix下
  • Windows -> Linux 移植问题
  • Linux程序移植到windows
  • 请教各位大虾!!linux下编译的程序如何移植到windows下
  • gtk+程序移植到Windows上的问题
  • 用什么工具(方法,编译器)将gtk+移植到window下????????
  • 请问大虾有关在windows上移植GCC的问题。
  • 由linux移植到window的问题
  • 请问:如果要把windows程序移植到UNIX下,需要注意哪些问题?
  • 怎么移植使用了Windows注册表的程序到Linux下?
  • 请问在Windows 2000下开发的基于WebSphere的应用,移植到商用Unix下要注意什么?
  • 如何将GCC移植到Windows上使用?
  • 急!! windows 的库函数如何移植到unix下
  • linux下如何实现 类似Windows的WaitForMultipleObjects函数的功能
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • windows server2008上PowerBuilder程序系统错误解决方法
  • AIX 5.3下调用windows 2000上的exe程序,且AIX下需要得到windows下程序执行的返回结果
  • windows下cmd命令提示符下让程序后台运行命令
  • 请指点: 在windows下能否通过程序来获取linux下的用户列表,甚至通过自己写的windows程序界面增加修改linux的用户
  • 请指点: 在windows下能否通过程序来获取linux下的用户列表,甚至通过自己写的windows程序界面增加修改linux的用户 100分相赠
  • 怎样是编好的java application在windows上像windows应用程序一样直接运行
  • linux的程序员是不是比windows程序员的薪水高啊?
  • 怎样开发在LINUX 上运行的应用程序,像WINDOWS桌面应用程序一样
  • 学习JAVA程序设计,有没有《WINDOWS程序设计》这样的经典书籍?
  • linux客户端程序能否和windows端的服务器程序进行socket通信?
  • 高价RMB求将windows下的程序转成linux下的程序
  • 想知道为什么window程序能在不同的硬件的windows平台上运行,而linux不行
  • wine中安装windows程序,程序崩溃的问题
  • JAVA能写个程序一般的window程序在任务栏挂一个图标么?
  • 一个老程序员的观点:Linux程序/内核设计是一门技术,Windows下的可扩展、可复用架构设计是一门艺术!
  • c/c++ iis7站长之家
  • 请问Linux如何象Windows 那样把我的程序放到启动里面,登录后启动我的程序
  • 关于《Windows程序设计》的问题
  • perl程序怎么在windows系统运行
  • Windows下如何调试linux的c程序
  • linux程序设计比windows容易吗?
  • java命名空间java.awt类window.accessibleawtwindow的类成员方法: window.accessibleawtwindow定义及介绍
  • 怎么在Linux下改windows系统文件啊,我把windows的BOOT.INI改了,windows启动不了
  • java命名空间java.awt类window的类成员方法: window定义及介绍
  • x-windows如何安装在linux(rdehat9)上面呢,是不是x-windows也分windows和linux版本的吗?
  • java命名空间java.awt.event类windowevent的类成员方法: window_activated定义及介绍
  • linux和windows串口问题!?linux向windows端发送,第一次write正常,继续write,windows接收到的就变成乱码了,这是什么原因??????
  • java命名空间java.awt.event类windowevent的类成员方法: window_deactivated定义及介绍
  • redhat7.3+window me +windows xp 共存,MBR在windows me 分区,现在要重裝windwos me,怎么办?
  • java命名空间java.awt.event类windowevent的类成员方法: window_gained_focus定义及介绍
  • 装了Linux和Windows,怎样默认进入Windows


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,