请问线程间通讯的方法?

Renas2005 2005-04-24 11:09:11
一个主线程启动一个子线程

这个子线程如何向主线程发送一个消息呢 ?

我是用的控制台 没有窗口
...全文
254 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
Practise_Think 2005-04-25
  • 打赏
  • 举报
回复
就是NEW一个内存块,用指针传递给线程函数,然后拥有这个指针的各个线程均可对这个内存块读写,就是这样来通讯的.具体形式有很多,但这里得注意数据安全不要发生两个或以上线程同时一个读一个写的情况
Renas2005 2005-04-25
  • 打赏
  • 举报
回复
up
Renas2005 2005-04-25
  • 打赏
  • 举报
回复
扛不住了 睡觉去了先..

Renas2005 2005-04-25
  • 打赏
  • 举报
回复
因为线程函数里还要调用函数 ..是个调用链

所以必须传递this
怎么办?? 郁闷 >_<
Renas2005 2005-04-25
  • 打赏
  • 举报
回复
内存共享是怎么做的?
Renas2005 2005-04-25
  • 打赏
  • 举报
回复
如果用 的话 那个主线程的idThread是?


是不是要在主线程里有个循环

while( !done)
{

GetMessage(&tempMsg,NULL,0,0);
if(tempMsg.message ==1)
done=TRUE;
}

Practise_Think 2005-04-25
  • 打赏
  • 举报
回复
我常用的是内存共享!!
BigFanOfCpp 2005-04-25
  • 打赏
  • 举报
回复
控制台没有消息循环,怎么发消息,我一般还是用共享内存段或者内存映射文件。
xuzheng318 2005-04-25
  • 打赏
  • 举报
回复
PostThreadMessage
This function places a message in the message queue of the specified thread and then returns without waiting for the thread to process the message.

BOOL PostThreadMessage(
DWORD idThread,
UINT Msg,
WPARAM wParam,
LPARAM lParam );
Kudeet 2005-04-25
  • 打赏
  • 举报
回复
没有窗口的类一般是不能响应窗口消息,从ccmdtarget继承可以响应wm_command消息。线程的消息可以试试用postthreadmessage
Renas2005 2005-04-25
  • 打赏
  • 举报
回复
oyljerry(【勇敢的心】→ ㊣Fighting A za!㊣)
把this替换为线程ID传递进去
----------------------------------------------

如果不替换this还有没有办法把id传进去呢?
peterfly 2005-04-25
  • 打赏
  • 举报
回复
控制台怎么能响应消息呢?
an_bachelor 2005-04-25
  • 打赏
  • 举报
回复
在主线程里调用GetCurrentThreadId不久得到主线程的ID了么
oyljerry 2005-04-25
  • 打赏
  • 举报
回复
GetWindowThreadProcessId
DStoto2005 2005-04-25
  • 打赏
  • 举报
回复
上课归来
继续顶

主线程的ID 是什么?
DStoto2005 2005-04-25
  • 打赏
  • 举报
回复
上课去了 ..
DStoto2005 2005-04-25
  • 打赏
  • 举报
回复
那this被替换了 编译通不过 -_- 我又不想把线程函数写成全局的

如果写成窗口程序 是不是就不存在这种问题了?
ps:怎么求主线程的ID ?
oyljerry 2005-04-25
  • 打赏
  • 举报
回复
把this替换为线程ID传递进去
oyljerry 2005-04-25
  • 打赏
  • 举报
回复
共享内存,一般通过页文件来交换数据,可以进行大数据量的交换,效率高
一般通过消息来通知数据的读写
DStoto2005 2005-04-25
  • 打赏
  • 举报
回复



怎样把把主线程ID当做参数传递给子线程?
我的CreateThread是在一个类里面 所以传递的参数是
this 怎么办?
CreateThread(NULL, 0, MyThrd,
this, 0, &threadID);
加载更多回复(2)

15,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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