多个线程之间如何通信?

MHBBCRCPJ 2011-04-30 10:09:04
搜了一下,全都是VC和JAVA的,郁闷。
还有那种能够同时执行的多条指令队列是叫线程吧?
首先比如我想要实现在一个线程中执行一个操作之后告诉令一个线程这个操作执行完了的话,怎么弄?通过线程之间共享的逻辑尺(线程之间可以共享数据么?)?这样的话岂不是需要另一个线程持续不断地扫描这个逻辑尺?用CALL?也说不通吧?硬件有没有提供类似中断的机制呢(只有另一个线程才会相应的中断)?
...全文
595 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
大熊猫侯佩 2011-05-01
  • 打赏
  • 举报
回复
多线程的同步机制,不同OS有不同的方法,如果用ruby,java等高级玩意,可以比较省心。(也未必,

看一下ruby线程的可移植粗粒度实现...),如果是windows下,你看windows核心编程即可,如果还想

深入,再推荐windows内核的线程结构和内核消息传递
cnzdgs 2011-05-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 mhbbcrcpj 的回复:]
你是从操作系统的角度说的么?我想知道的是CPU本身有没有提供硬件的支持。
[/Quote]
CPU没有提供支持。
YTerrenceLau 2011-04-30
  • 打赏
  • 举报
回复
我先澄清一个概念,大多数提到线程(尤其在CSDN这个‘软件’社区)都是指进程中的多线程。楼主说的“多条指令队列”可能指的是CPU的多线程(SMT中的T)。事实上CPU所定义的多线程可以认为是操作系统层面的多进程。
如果楼主指的是操作系统中的线程,无疑楼上几位已经回答了,如果指的是处理器中的多线程,我这里顺便作答:一般来说,如果不采用专用的进程通信机制或内存共享机制,一个进程(操作系统概念,你可以认为是处理器中的线程概念)无法感知另外一个进程到底发生了什么事情,但如果两个进程处于空间重叠的情况(如整个计算机运行一种特殊的系统或者普通操作系统中的内核态线程)仍然是即时感知的,就是一个任务更改了变量,另外一个任务可以立即获得这个更改,看起来跟操作系统中的一个进程内多个线程一样的效果。
yhshion_yhshion 2011-04-30
  • 打赏
  • 举报
回复
你说的是线程,这本身就应该是操作系统调度范畴,1楼正解
MHBBCRCPJ 2011-04-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 cnzdgs 的回复:]
如果被通知的线程有消息循环,可以通过发送自定义消息通讯;如果没有,可以用一个事件,被通知线程使用等待函数等待事件,由另一线程来触发该事件。
线程之间数据是共享的。
[/Quote]
你是从操作系统的角度说的么?我想知道的是CPU本身有没有提供硬件的支持。
cnzdgs 2011-04-30
  • 打赏
  • 举报
回复
前面回复不够严谨,应该说同一进程中的线程之间数据是共享的。
cnzdgs 2011-04-30
  • 打赏
  • 举报
回复
如果被通知的线程有消息循环,可以通过发送自定义消息通讯;如果没有,可以用一个事件,被通知线程使用等待函数等待事件,由另一线程来触发该事件。
线程之间数据是共享的。

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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