关于linux下pthread建立线程在多核上运行的问题

liu3daniel 2013-03-06 10:34:44
线程、进程算是老生常谈的问题了,以前我也是只知道“一个进程只有一个线程时就单核,有多个线程时就可以多核”。
多看了一些书以后,觉得线程就只是程序虚拟的一个东西,线程的同步、通信、创建、调度等全是由pthread一手控制的,linux操作系统根本不知道它的存在。问题就来了,linux把任务调度到多核上完全是进程级别的,总不能智能到去分析同一进程编号的进程下面用户自己还按任务分了几个线程吧?
总之,就想问一下大牛们pthread写的多线程程序到底能不能在多核上运行?如果能,那么这里的“线程”是不是被pthread悄悄地fork、exct成进程了?
...全文
641 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ForestDB 2013-03-08
  • 打赏
  • 举报
回复
fork的进程,pthread的线程,在内核都是task。
金刚葫芦娃 2013-03-07
  • 打赏
  • 举报
回复
来看看,学点东西.
liu3daniel 2013-03-07
  • 打赏
  • 举报
回复
引用 1 楼 nice_cxf 的回复:
linux下pthread本身就是一个轻量级进程
有您这一句话就够了。我对轻量级的理解是,有独立的进程描述符,能够被系统单独调度;共用内存描述符。
liu3daniel 2013-03-07
  • 打赏
  • 举报
回复
引用 2 楼 luzhengyue07 的回复:
线程是系统调度的单元,进程是资源分配的单元。 linux下pthread和fork、exec不同,fork会创建一个新进程需要进行分配资源,父进程结束后子进程可以继续存在,pthread是共享主进程的资源,主进程结束创建的子线程跟着销毁。
进程和进程描述符一一对应,操作系统只认进程描述符。线程和程序员对问题认识的并行程度一一对应,我写个一到十的加法,觉得可以分成1加五和6加到10两部分,那么好,这就是两个线程了。
赵4老师 2013-03-06
  • 打赏
  • 举报
回复
《30天自制操作系统》
luzhengyue07 2013-03-06
  • 打赏
  • 举报
回复
线程是系统调度的单元,进程是资源分配的单元。 linux下pthread和fork、exec不同,fork会创建一个新进程需要进行分配资源,父进程结束后子进程可以继续存在,pthread是共享主进程的资源,主进程结束创建的子线程跟着销毁。
nice_cxf 2013-03-06
  • 打赏
  • 举报
回复
linux下pthread本身就是一个轻量级进程

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧