Redian新闻
>
对pthread熟悉的XD请进来看看
avatar
对pthread熟悉的XD请进来看看# Programming - 葵花宝典
p*g
1
【 以下文字转载自 JobHunting 讨论区 】
发信人: putting (hehe), 信区: JobHunting
标 题: CS or CE Job openning in southern california
发信站: BBS 未名空间站 (Tue May 20 13:14:16 2008)
If interested, please send resume to my mit email, or email me your contact
info with brief self introduction.
avatar
p*p
2
想用pthread实现Producer/Consumer模型,但要避免polling的出现。因为这样反复检
查一个变量以判断是否有data被producer生成的话,系统占用率会很高,大量CPU时间
都浪费在轮询上了。
研究了一下pthread,里面的condtion variable好像可以用来同步线程。但发现只
有pthread_cond_wait和pthread_cond_signal两个主要函数,一个用来等某个条件
,另一个用来发出该条件。找了半天没看到如何取消该条件来导致线程重新进入等
待状态。也就是说,比如用户A等待某个condition,然后B激活该condition,A被唤
醒,完成工作,下面想让该condition被取消,这样A继续能够用pthread_cond_wai
t来睡眠直到condition重新被激活为止。
如果只用pthread_cond_wait和pthread_cond_signal两个函数的话,用户一旦被唤
醒就不可能再被催眠了,这样就没法达到设计的目的。
对pthread还没吃透,哪位DX给点建议或者link?多谢!
avatar
w*c
3
这个转得好,连个投email都不留...
avatar
T*i
4
loop

【在 p**p 的大作中提到】
: 想用pthread实现Producer/Consumer模型,但要避免polling的出现。因为这样反复检
: 查一个变量以判断是否有data被producer生成的话,系统占用率会很高,大量CPU时间
: 都浪费在轮询上了。
: 研究了一下pthread,里面的condtion variable好像可以用来同步线程。但发现只
: 有pthread_cond_wait和pthread_cond_signal两个主要函数,一个用来等某个条件
: ,另一个用来发出该条件。找了半天没看到如何取消该条件来导致线程重新进入等
: 待状态。也就是说,比如用户A等待某个condition,然后B激活该condition,A被唤
: 醒,完成工作,下面想让该condition被取消,这样A继续能够用pthread_cond_wai
: t来睡眠直到condition重新被激活为止。
: 如果只用pthread_cond_wait和pthread_cond_signal两个函数的话,用户一旦被唤

avatar
p*p
5
你是指用loop来轮询变量么?前面帖子里说了,希望尽量避免用这种方式

【在 T*******i 的大作中提到】
: loop
avatar
T*i
6
put condition_wait at the beginning of the loop

【在 p**p 的大作中提到】
: 你是指用loop来轮询变量么?前面帖子里说了,希望尽量避免用这种方式
avatar
X*r
7
再wait就是了,signal只是一次性的。

【在 p**p 的大作中提到】
: 想用pthread实现Producer/Consumer模型,但要避免polling的出现。因为这样反复检
: 查一个变量以判断是否有data被producer生成的话,系统占用率会很高,大量CPU时间
: 都浪费在轮询上了。
: 研究了一下pthread,里面的condtion variable好像可以用来同步线程。但发现只
: 有pthread_cond_wait和pthread_cond_signal两个主要函数,一个用来等某个条件
: ,另一个用来发出该条件。找了半天没看到如何取消该条件来导致线程重新进入等
: 待状态。也就是说,比如用户A等待某个condition,然后B激活该condition,A被唤
: 醒,完成工作,下面想让该condition被取消,这样A继续能够用pthread_cond_wai
: t来睡眠直到condition重新被激活为止。
: 如果只用pthread_cond_wait和pthread_cond_signal两个函数的话,用户一旦被唤

avatar
m*e
8
use semophore

【在 p**p 的大作中提到】
: 想用pthread实现Producer/Consumer模型,但要避免polling的出现。因为这样反复检
: 查一个变量以判断是否有data被producer生成的话,系统占用率会很高,大量CPU时间
: 都浪费在轮询上了。
: 研究了一下pthread,里面的condtion variable好像可以用来同步线程。但发现只
: 有pthread_cond_wait和pthread_cond_signal两个主要函数,一个用来等某个条件
: ,另一个用来发出该条件。找了半天没看到如何取消该条件来导致线程重新进入等
: 待状态。也就是说,比如用户A等待某个condition,然后B激活该condition,A被唤
: 醒,完成工作,下面想让该condition被取消,这样A继续能够用pthread_cond_wai
: t来睡眠直到condition重新被激活为止。
: 如果只用pthread_cond_wait和pthread_cond_signal两个函数的话,用户一旦被唤

avatar
p*p
9
原来如此,多谢指点!!!

【在 X****r 的大作中提到】
: 再wait就是了,signal只是一次性的。
avatar
T*i
10
郁闷呀
这个版每次答完问题,都是把我晾一边

【在 p**p 的大作中提到】
: 原来如此,多谢指点!!!
avatar
p*s
11
我来代谢一次.
//hand hand, 昨天你回答的getopts我后来也看到了.

【在 T*******i 的大作中提到】
: 郁闷呀
: 这个版每次答完问题,都是把我晾一边

avatar
X*r
12
人不知而不愠,不亦君子乎。

【在 T*******i 的大作中提到】
: 郁闷呀
: 这个版每次答完问题,都是把我晾一边

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。