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

支持多线程(多进程)的子程序(模块)应该具备哪些特点?

    来源: 互联网  发布时间:2016-03-14

    本文导语:  我要在Linux下用C语言写一个比较独立的模块,供别人调用,类似于一个GUI库、控件库,但是要求要支持多线程(多进程)。 设计这样的模块应该注意什么问题呢? 支持多线程(多进程)的模块都有什么特点吗? 应该如何...

我要在Linux下用C语言写一个比较独立的模块,供别人调用,类似于一个GUI库、控件库,但是要求要支持多线程(多进程)。
设计这样的模块应该注意什么问题呢?
支持多线程(多进程)的模块都有什么特点吗?
应该如何设计?如何测试?

谢谢。。。

|
唔...,头一次做沙发,忍不住说两句。linux没用过,不过支持多线程的函数就是线程安全(Thread Safe),更准确的说是可重入(reenterable),就是说在多线程中,函数被一个线程调用未返回前又被另一个线程调用而不会造成访问冲突。这要求
1.函数使用堆栈传递参数和分配局部变量(对于有些编译器来说,会使用寄存器或为局部变量优化存储空间,这种方式是无法重入的)
2.不直接赋值给全局变量。用访问函数使用同步方式访问全局变量(这是个好的编程习惯)。
3.注意你调用的其他函数和库函数(这个问题一定要注意,我曾经折腾了好几天)是否是线程安全的或者是可重入的。

|


楼上总结的不错.我就线程安全(Thread Safe)和可重入(reenterable)在多说几句.

看了好几本参考说,提到这两个概念,但都没说清楚二者的关系.我的理解是可重入(reenterable)是比线程安全(Thread Safe)更高层次的概念:

1. 可重入(reenterable)一定是比线程安全(Thread Safe);反之则不然
2. 可重入(reenterable)强调了模块或函数的可并发能力,可以由多个thread同时调用执行
3. 线程安全(Thread Safe)的模块或函数不一定就能可重入, 因为有可能内部用了mutex或者其它同步方式,从而限制了多个thread对此模块或函数的并发执行.
4. 尽量以可重入(reenterable)为实现目标来充分利用如今日益流行的多核硬件技术来提高执行效率.

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 华为EM200模块支持的关机指令.
  • 内核选项中到底要选哪些模块才能支持优盘?
  • 在Python安装MySQL支持模块的方法
  • 让python的Cookie.py模块支持冒号做key的方法
  • 设计一个在/proc中实现clock文件的模块,该clock文件只支持文件的read操作,该操作访问内核变量xtime,很简单的一个内核模块实验,我第一
  • Docker支持的安装方式
  • php for linux安装既不支持mysql.如何配置支持mysql
  • Ubuntu 12.04长期支持版和最新版Ubuntu 13.10下载
  • 在red hat 9.0.1支持u盘吗,支持如何驱动呀?谢了先。
  • Docker宣布支持Windows 10和Azure Windows Server
  • 到底有哪些网站支持JSP???163.com的免费空间支持吗?
  • windows10玩游戏怎么样?唯一支持DirectX 12的windows
  • 急急急,2.4.20的内核不支持pci-e,请问如何才能使其支持?
  • Docker支持更深入的容器日志分析
  • JBuilder4 能支持 Weblogic 6.0吗?怎麽支持?
  • ​Windows Server 2016提供Docker原生运行的企业级支持
  • RedHat 7.1英文版怎么样通过外挂支持中文?只要求支持......
  • nginx服务器下通过fastcgi支持php5详细安装配置步骤
  • 请问 solaris支持不支持以下几种格式的读取啊
  • HTML <strike> 标签 - HTML5 不支持
  • IE6对XML的支持比较好,但不支持JAVA……
  • HTML <tt> 标签 - HTML5 不支持
  • win7 下不支持andliunx 虚拟机,有别的支持win7的吗
  • HTML <font> 标签 - HTML5 不支持
  • 请问mozilla(redhat9里的)对javascript的支持程度,是否支持iframe?参与有分
  • HTML <basefont> 标签 - HTML5 不支持
  • JBuilderIDE中怎么才能支持鼠标的滚动轴啊?这都不支持好别扭~


  • 站内导航:


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

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3