社区
Linux/Unix社区
帖子详情
如何在linux线程中实现windows下PostThreadMessage的功能
fytzzh
2005-08-18 09:53:10
如题
...全文
206
7
打赏
收藏
如何在linux线程中实现windows下PostThreadMessage的功能
如题
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
bugebear3
2005-08-24
打赏
举报
回复
共享内存SHM
tengulre
2005-08-24
打赏
举报
回复
IPC
fytzzh
2005-08-23
打赏
举报
回复
大家都来讨论啊
sharkhuang
2005-08-23
打赏
举报
回复
消息队列好了 现成得
hundlom
2005-08-23
打赏
举报
回复
可以代替的有:消息队列,信号,管道等进程间通信
yjf7888
2005-08-23
打赏
举报
回复
信号量+消息队列或者pthread_kill+消息队列
注意对消息队列访问的同步
tb01412
2005-08-18
打赏
举报
回复
可以使用条件变量加全局缓冲区的方式来代替
PostThreadMessage
()
线
程ID无效的问题
这个函数既可以发送消息给工作
线
程,也可以发送给UI
线
程。接受
PostThreadMessage
的
线
程必须已经有了一个message queue,否则调用
PostThreadMessage
会失败。因为此原因使用GetLastError会得到错误码为1444,这种情况经常出现,解决方法有如下两种: 1. 调用
PostThreadMessage
,如果失败,就Sleep一段时间再次调用
进程间通信与
线
程间通信 .
windows
下多
线
程通信方法
Linux
多
线
程通信
操作系统的主要任务是管理计算机的软件、硬件资源。现代操作系统的主要特点是多用户和多任务,也就是程序的并行执行,
windows
如此
linux
也是如此。所以操作系统就借助于进程来管理计算机的软、硬件资源,支持多任务的并行执行。要并行执行就需要多进程、多
线
程。因此多进程和多
线
程间为了完成一定的任务,就需要进行一定的通信。而
线
程间通信又和进程间的通信不同。由于进程的数据空间相对独立而
线
程是共享数据空间的,
PostThreadMessage
笔记
函数
功能
:该函数将一个消息放入(寄送)到指定
线
程的消息队列里,不等待
线
程处理消息就返回。 函数原型: BOOL
PostThreadMessage
(DWORD idThread,UINT Msg,WPARAM wParam,LPARAM IParam); 参数: idThread:其消息将被寄送的
线
程的
线
程标识符。如果
线
程没有消息队列,此函数将失败。当
线
程第一次调用一个Win 32 USER...
在
Linux
环境中用模拟
Windows
中的
线
程消息队列
本文对于内核中加入了System V 进程通信机制的系统来说是多余的,因为System V 进程通信机制中已经
实现
了消息队列。对于那些未将System V 进程通信选入内核编译的系统(本文中将要描述的就是这类情况,下面所提到的都是这种
Linux
系统,不再特别说明),要如何
实现
类似
Windows
的
线
程消息队列操作(
PostThreadMessage
/ GetMessage)呢?
windows
线
程核心内容
线
程
线
程由2部分组成:
线
程的内核对象(存放
线
程统计信息)和
线
程栈(维护
线
程执行所需的所有函数参数和局部变量) 假如一个进程由2个以上的
线
程运行,这些
线
程共享同一地址空间,共享内核对象句柄(因为句柄表是针对每一个进程的) 新
线
程与负责创建的那个
线
程在相同的进程上下文中运行,因此新
线
程可以访问进程内核对象的所有句柄,进程的所有内存以及同一进
程中
其他所有
线
程的栈 createthre......
Linux/Unix社区
23,126
社区成员
74,510
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章