免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 聪聪知不道
打印 上一主题 下一主题

大家都是怎么给pthread_create()创建的线程函数传递参数的呀? [复制链接]

论坛徽章:
0
21 [报告]
发表于 2010-07-09 23:12 |只看该作者
我传的内容使用主线程局部变量,在线程拷贝走,通知主线程重用,主线程不退,局部变量可用。PTHR ...
yulihua49 发表于 2010-07-09 17:11



正式的发布版程序里调用usleep()我觉得不太合适,因为usleep()依据不同的实现是有bug的,会带来诸如破坏alarm信号等问题。即便换成了nanosleep(),也仍然觉得不妥。因为后面休眠的时间写多少是一个问题——怎么能够确定1000的时间足够满足条件呢?又怎么知道1000没有浪费时间呢?

论坛徽章:
0
22 [报告]
发表于 2010-07-09 23:16 |只看该作者
用外部变量,定义成数组,每个线程编号做下标
hellioncu 发表于 2010-07-08 21:26


好方法,谢谢

可是总听人说,全局变量也尽量避免使用。在咱们这里除了采用全局,还有啥其他想法么?

论坛徽章:
0
23 [报告]
发表于 2010-07-09 23:17 |只看该作者
同意楼上,传句柄/下标比传指针安全,可以多一次有效性检查。
没本 发表于 2010-07-08 22:59



    在提到信号处理的时候,总听人把一个sig_handler()叫做一个句柄,不过我一直不太明白这个概念。
到底啥叫句柄啊?

论坛徽章:
0
24 [报告]
发表于 2010-07-09 23:30 |只看该作者
本帖最后由 没本 于 2010-07-09 23:35 编辑
在提到信号处理的时候,总听人把一个sig_handler()叫做一个句柄,不过我一直不太明白这个 ...
聪聪知不道 发表于 2010-07-09 23:17



    你就当它是张代金券就行了。那那个券可以去领取对应的指针或者其他商品,但是领的时候可能收券的人要验证是不是作废的券,如果对应的指针或者商品已经作废或过期了了,那么就成了废券,啥也领不到。
这样比工作线程拎着个也不知道还有没有作废的指针要安全,因为指针直接就能搞事。而手里拿的是券的话,必须多一个兑换的环节,有机会验证有效性,程序更不容易崩溃。

论坛徽章:
0
25 [报告]
发表于 2010-07-09 23:35 |只看该作者
你就当它是张代金券就行了。那那个券可以去领取对应的指针或者其他商品,但是领的时候可能收券的 ...
没本 发表于 2010-07-09 23:30



那么在C语言中怎么得到一个句柄呢?给个简单的例子呗   

论坛徽章:
0
26 [报告]
发表于 2010-07-09 23:41 |只看该作者
好方法,谢谢

可是总听人说,全局变量也尽量避免使用。在咱们这里除了采用全局,还有啥其他想 ...
聪聪知不道 发表于 2010-07-09 23:16



    他的这个设计里,全局数组每个下标项如果保证只有一条线程去访问的话,就是不需要锁的巧妙设计。多线程程序高明的设计就是要尽量避免锁,有锁也尽量细粒度不要影响到所有的线程。

论坛徽章:
0
27 [报告]
发表于 2010-07-09 23:44 |只看该作者
那么在C语言中怎么得到一个句柄呢?给个简单的例子呗
聪聪知不道 发表于 2010-07-09 23:35



    最简单的例子当然就是那数组下标当句柄。数组元素存指针,如果数组元素被清空了,该下标(句柄)也就无效了。当然实际上的设计可能不会那么简单。

论坛徽章:
0
28 [报告]
发表于 2010-07-09 23:49 |只看该作者
他的这个设计里,全局数组每个下标项如果保证只有一条线程去访问的话,就是不需要锁的巧妙设计。多线程程序高明的设计就是要尽量避免锁,有锁也尽量细粒度不要影响到所有的线程。
没本 发表于 2010-07-09 23:41


传参这里怎么会用到锁呢?无论咱们用原始的强转成(void*)的方法,还是malloc()结构体传参的方法,都不用互斥呀。

论坛徽章:
0
29 [报告]
发表于 2010-07-09 23:50 |只看该作者
最简单的例子当然就是那数组下标当句柄。数组元素存指针,如果数组元素被清空了,该下标(句柄) ...
没本 发表于 2010-07-09 23:44



    嗯~

论坛徽章:
0
30 [报告]
发表于 2010-07-09 23:55 |只看该作者
传参这里怎么会用到锁呢?无论咱们用原始的强转成(void*)的方法,还是malloc()结构体传参的方法,都不用 ...
聪聪知不道 发表于 2010-07-09 23:49



    既然这里用不到锁,这样的全局变量又有什么可怕的呢?所以没必要刻意避免这样的全局变量。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP