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

关于linux进程和线程的疑问!请教达人!

    来源: 互联网  发布时间:2016-10-06

    本文导语:  Q1:apue中提到线程的优点时,有一点:多线程编程能够简化处理异步事件的代码。     异步事件指什么呢?多线程又是如何简化的? Q2:进程创建了多个线程后,我在线程中getpid()确认这些线程的pid都是进程本身的...

Q1:apue中提到线程的优点时,有一点:多线程编程能够简化处理异步事件的代码。
    异步事件指什么呢?多线程又是如何简化的?

Q2:进程创建了多个线程后,我在线程中getpid()确认这些线程的pid都是进程本身的pid;有介绍说linux的任务调度是以
    进程为单位的,那么它如何调度这个进程和它下面的多个任务的呢?或者说线程如何调度呢?

Q3: fork()之后,子进程复制父进程的互斥量(mutex),因此fork之后的子进程调用系统函数或者获取互斥量时很可能导致死
    锁。这也是pthread_atfork函数主要处理的问题。
    我的疑问是:互斥量是全系统可见的吗?我一直以为它是进程内部线程之间可见的东西。
    
    

|
Q1, asynchronous events are those occurring independently of the main program flow. 多线程本来就是异步的。说白了就是同一个进程同时做多个没有不同的事情。

Q2, 线程的调度是由线程库完成的

Q3, mutex只在进程内可见, 但是linux fork出的子进程是单线程的,而有些mutex的状态不是由调用线程控制,所以mutex状态混乱会导致子进程死锁。

|
Q1,异步事件比如信号
多线程编程时,可以单独创建一个线程,专职等待并处理信号,这样就类似同步的处理方式了。能够简化处理代码

Q2,不是很懂
貌似是lwp的概念,即轻量级进程,与getpid获取的不是一个概念

Q3,提一下,互斥锁允许设置进程间共享属性。锁本身可以放在共享内存中,这样就是全系统可见的了

|
Q2. Linux线程的实现实际上分两种:用户级和内核级。用户级别线程调度是由线程库完成的。而内核级的线程与进程在内核中是一样的,每个线程也都有相应的pid,有自己独立的栈空间,只不过这些线程之间共享同一个地址空间。所以Linux下的getpid()实际上返回的是线程组ID,且由内核统一调度。
在一些旧版本的Linux系统中,每个线程调用getpid()返回的结果是不一样的,但相应的线程组ID的一致的。

|
Q3. 这里的死锁一般是指是多线程程序在fork()之后很容易导致的死锁。
具体例子,见http://blog.csdn.net/hanchaoman/archive/2010/06/22/5685582.aspx
多线程尽量不用fork(),如果有需要,直接再多创建几个线程,效果应该差不多。

    
 
 

您可能感兴趣的文章:

  • 向linux达人请教linux下5.1声道测试工具
  • 请教下linux达人 相关版本2.6的进程调度
  • 寻 懂的redhat linux 下 . 使用automake和autoconf 自动生成Makefile 的 达人。
  • 请达人介绍一些经典的linux下c编程的书籍
  • 我的linux声卡装不上,达人帮忙!
  • 达人狂入:linux中木马,文件无法删除
  • 请教linux达人
  • 求达人指教: 很简单的linux脚本,可是就是找不到问题在哪
  • 达人帮忙爱!!! Linux下无法调用.o文件!!!
  • 请教达人:如何不改内核在linux的应用程序层实现键盘拦截功能。
  • linux设备驱动应该怎么学习?求达人经验指教
  • 小弟在学习LINUX程序设计时遇到有关wait和waitpid的问题,请各位达人帮忙,不胜感激。
  • Linux Shell 的小问题 (高分请教达人)
  • 这是我从别处向达人请教来的(关于WIN下装RH9 LINUX的),在这再想让大家看看,还有什么要我等别注意的吗?
  • Windows和Linux下C++类成员方法作为线程函数方法介绍
  • 请问Linux核心支持多线程吗?开发库有线程库吗?线程好用吗?(稳定?)
  • Linux下GCC内置原子操作函数(多线程资源访问)介绍
  • 求个linux多线程编程的例子,要有线程池的 通用些更好
  • 请问Linux下线程开销为什么这么大?一个线程要占用近10M内存
  • Linux多线程时一些线程分不到时间片
  • 说说windows线程和linux线程的区别?
  • linux 下多线程 每个线程能否使用alarm来处理,信号是否会乱呢?
  • linux下,如何在多线程中每个线程设置一个定时器,在线等,急。。。谢谢
  • 在创建linux线程时为什么会多一个线程?
  • linux如何主动将线程放入到线程调度队列中重新排队?
  • 在linux RH73下为什么单进程只能开1021个线程线程.
  • Linux下如何让主线程挂起一个指定的时间段而子线程继续运行?谢谢
  • 请教Linux下的编程工具 iis7站长之家
  • linux线程编程问题
  • linux线程最大数,奇怪,怎么只有300?而且线程是用完就没了,不是同时300啊!
  • 跪求:linux下pthread 双线程计算和单线程的运行时间完全相同是为什么?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请教Linux下pgadmin3-1.0.2的编译和安装!!高分请教!
  • 各位大虾,请教装了REDHAT9操作系统后,启动时无法引导到LINUX,请教该如何解决啊
  • 请教一下,如果想在linux下开发java,选哪个版本的linux好一点
  • 小弟想请教,如果现在不像装linux了怎样把linux的分区改回ntfs格式的?
  • 请教:linux启动盘和一张盘的linux有何区别?
  • 请教linux高手,在Linux
  • 在linux下面怎么安程序啊?我刚裝了一个 linux,下了一个迅雷安装程序,可是不知道怎么安装啊?真心请教。
  • 初次接触linux,关于linux 用户权限问题请教!
  • 请教linux 下的adsl拨号问题.
  • 【请教】LINUX 下SNMP的MIB开发
  • 请教象我这样的硬盘应如何安装Linux,我昨天试装了,但有问题。(老问题了,也看了前面的帖子,但还是来请教,请多指教)
  • 各位大狭!小弟初学Linux,请各位列举学Linux的网站,留下QQ,Email以向各位请教!!!多谢了!!!
  • 菜鸟请教Linux
  • 高手看过来:请教如何在移动硬盘上安装Linux?
  • 请教:如何在Linux下获得EDID信息
  • 请教风河 linux内核 如何配置使之支持xwindows?
  • 请教大家一下,linux运维方面的书应该读什么?
  • 请教:如何直接使用RedHat Linux 9的ISO文件安装Linux?
  • 我的linux装不上啊???请教高手
  • 请教Linux下的编程工具
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux
  • linux命令大全详细分类介绍及常用linux命令文档手册下载


  • 站内导航:


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

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

    浙ICP备11055608号-3