Chinaunix

标题: 线程A需要向线程B发送一些字符串,该如何实现?有没有最简单的线程间通讯的例子? [打印本页]

作者: iiiyyyhhhsss    时间: 2011-04-13 23:04
标题: 线程A需要向线程B发送一些字符串,该如何实现?有没有最简单的线程间通讯的例子?
如题。
如果大家手头上有现成的小代码例子,希望粘贴上来,越简单的小例子,越好。
感激不尽啊。。。
作者: baozhao    时间: 2011-04-14 08:25
用管道
作者: hellioncu    时间: 2011-04-14 08:52
线程间还要什么通讯呀,都在一个进程内,直接就能访问了
作者: 雨过白鹭洲    时间: 2011-04-14 14:31
同上,共享数据+锁访问=OK
作者: 梅川内依酷    时间: 2011-04-14 14:31
一个全局变量
作者: iiiyyyhhhsss    时间: 2011-04-14 15:21
回复 4# 雨过白鹭洲


    问题是,我的线程A如何通知线程B:“您好,我的数据准备好了,你来拿吧”。。。
作者: iiiyyyhhhsss    时间: 2011-04-14 15:21
回复 3# hellioncu


    如6楼。
作者: hellioncu    时间: 2011-04-14 15:26
回复  hellioncu


    如6楼。
iiiyyyhhhsss 发表于 2011-04-14 15:21



    互斥、信号量等
作者: iiiyyyhhhsss    时间: 2011-04-14 15:35
回复 8# hellioncu


    我了解信号量不是很深入,但是,不知道,信号量是否适用于下面情况,麻烦你帮我看一下:


   本来我的线程B,是一直执行其他工作的,那么这个时候,A发一个命令给线程B,让B先停下来,去完成A的命令,完成后再继续“原来正在执行的工作”?
作者: hellioncu    时间: 2011-04-14 15:41
回复  hellioncu


    我了解信号量不是很深入,但是,不知道,信号量是否适用于下面情况,麻烦你帮我 ...
iiiyyyhhhsss 发表于 2011-04-14 15:35



    在B线程的线程函数每次循环都看有没有A的命令,有则做之。或者再加个线程去完成A的命令
作者: liexusong    时间: 2011-04-14 15:46
线程条件变量
作者: aaaaaa    时间: 2011-04-14 16:28
貌似楼主需要的是一个event驱动的线程间事件+数据驱动机制,这个话题里有简单实现?高性能的服务器端设计应该会用上下述2个技术中的一个:
http://en.wikipedia.org/wiki/Continuation
http://en.wikipedia.org/wiki/Coroutines
我觉得这2个都不是什么省事的鸟。
如有更好的设计,愿洗耳恭听。因为我在apache traffic server系统开发中,被他们的恐怖的continuation设计折腾的够呛。
作者: 蓝色神话    时间: 2011-04-14 16:36
sem_post
作者: yulihua49    时间: 2011-04-15 21:37
如题。
如果大家手头上有现成的小代码例子,希望粘贴上来,越简单的小例子,越好。
感激不尽啊。。。
iiiyyyhhhsss 发表于 2011-04-13 23:04



    int fd[2];

   pipe(fd);

pthread_create(&tid,a,NULL,fd[1]);//a写
pthread_create(&tid2,b,NULL,fd[0]);//b 读
作者: 丨Mua丶麦兜    时间: 2011-04-16 19:12
通知用条件变量啊




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2