免费注册 查看新帖 |

Chinaunix

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

[C] 多线程中看不中用? [复制链接]

论坛徽章:
0
21 [报告]
发表于 2014-11-15 16:17 |只看该作者
yulihua49 发表于 2014-11-15 16:14
大量的多线程应用都是C写的,没用fiber,你这话怎么说?
我们的C++应用,多线程部分也是C的。。。


他根本没理解我在说什么,瞎回的。

论坛徽章:
0
22 [报告]
发表于 2014-11-15 16:19 |只看该作者
yulihua49 发表于 2014-11-15 16:16
楼主说的多线程应用,没涉及语言,咱们是不是跑题了?


呵呵,不算跑题吧。

楼主的意思就是C的多线程编程不好用,这个我很同意的。同时我的意思是不好用的最大原因就是C没能在语言级别上支持多线程,就这样。

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
23 [报告]
发表于 2014-11-16 18:50 |只看该作者
本帖最后由 yulihua49 于 2014-11-16 19:16 编辑
xphh2008 发表于 2014-11-15 16:13
还怪MS了?

你要搞清楚为什么windows的线程API是那样的,不是windows的错,是因为C语言标准里就没有 ...

当然。
在WINDOWS诞生的年代,有UNIX,有Xopen,有 posix。
它为了自己的利益,依仗市场占有率,另立标准,导致如今技术分裂。
市场上,就是WINDOWS和*NIX了,其他都可忽略不计。说到可移植性,也就是在这二者之间了。
若不是MS的分裂行为,如今早就是世界大一统了。
如今的分裂,就是MS的原罪。
另,楼主的问题,不是语言和系统的问题,而是并行规划没做好,资源共享和互斥逻辑混乱导致,在任何系统,任何语言都是要出问题的。
又:技术所限,机器的功能与人的需求,其间巨大的鸿沟,需要众多的工具来填充,有的比较贴近机器,有的比较贴近人。这些工具,他们并不是互斥的,而是互补的,并不因为他们中,有的这方面所长,那方面所短而定义孰好孰坏。系统设计者、架构师的责任是选择合适的工具和平台,完成你的用户需求。
C语言在整个系统里,处于低层次,就是贴近机器这一层,它的使命,是尽可能高效的发挥机器的能力。它的初衷,就是简洁,只有为数不多的词汇算是语句,就连普通语言的基本IO,都不是语句,而是函数。一切皆函数。我一无所有,但我拥有整个世界。这在C,符合其定位,也是其走向成功但秘诀。所以,要求它,有这个,有那个,不仅是苛求,也有悖其哲学。如要扩充它,那不是有了C++吗?

论坛徽章:
0
24 [报告]
发表于 2014-11-16 19:11 |只看该作者
yulihua49 发表于 2014-11-16 18:50
当然。
在WINDOWS诞生的年代,有UNIX,有Xopen,有 posix。
它为了自己的利益,依仗市场占有率,另立标准,导致如今技术分裂。
市场上,就是WINDOWS和*NIX了,其他都可忽略不计。说到可移植性,也就是在这二者之间了。
若不是MS的分裂行为,如今早就是世界大一统了。
如今的分裂,就是MS的原罪。
另,楼主的问题,不是语言和系统的问题,而是并行规划没做好,资源共享和互斥逻辑混乱导致,在任何系统,任何语言都是要出问题的。


不要扩散开来讨论。就事论事讲,关于线程API,windows和linux实现不一致,绝对不是windows的错!

如果C语言把pthread纳入C标准库,你觉得windows下C编程还需要另外一套线程API吗?

所以错的不是MS,而是C语言!

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
25 [报告]
发表于 2014-11-16 19:19 |只看该作者
本帖最后由 yulihua49 于 2014-11-16 19:36 编辑
xphh2008 发表于 2014-11-16 19:11
不要扩散开来讨论。就事论事讲,关于线程API,windows和linux实现不一致,绝对不是windows的错!

如 ...

选择合适的平台,完成用户需求,是系统设计者的责任。你认为哪个好,哪个适合你,是你的主权,别人不能干涉。
WINDOWS下,有第三方的pthread库,不过功能并不全面,即没有涵盖WIN线程的功能,也没有涵盖POSIX线程功能,一般用用还马马虎虎。
当我们的系统限制在它的功能范围内时,系统就是可移植的。我们已经有一个双平台的系统,pthread库的,C,还马马虎虎。
如果MS当年用UNIX核心就不会有今天的问题,所以是它的原罪。苹果就做得很好(我的意思是,UNIX完全能够满足WINDOWS的需求,有时做得更好)。
C,就是趴在最底层的东西,这是它的岗位,职责所在,它干得很好。至于谁喜欢它,或不喜欢它,别人无权干涉。

论坛徽章:
0
26 [报告]
发表于 2014-11-17 19:06 |只看该作者
yulihua49 发表于 2014-11-16 19:19
选择合适的平台,完成用户需求,是系统设计者的责任。你认为哪个好,哪个适合你,是你的主权,别人不能干涉。
WINDOWS下,有第三方的pthread库,不过功能并不全面,即没有涵盖WIN线程的功能,也没有涵盖POSIX线程功能,一般用用还马马虎虎。
当我们的系统限制在它的功能范围内时,系统就是可移植的。我们已经有一个双平台的系统,pthread库的,C,还马马虎虎。
如果MS当年用UNIX核心就不会有今天的问题,所以是它的原罪。苹果就做得很好(我的意思是,UNIX完全能够满足WINDOWS的需求,有时做得更好)。
C,就是趴在最底层的东西,这是它的岗位,职责所在,它干得很好。至于谁喜欢它,或不喜欢它,别人无权干涉。


你搞错重点了,不是喜欢不喜欢的问题。C是我最喜欢的编程语言,要不我也不来C版灌水。

MS凭什么要用UNIX核心?人家有人家的自由,怎么能叫“原罪”,莫名其妙。

我还是那句话,C应该可以适应时代进步,在标准库(或者甚至语法)加入线程的支持,毕竟高性能服务器领域是C的菜,让编程更轻松,不是更好吗?

按你的逻辑,C语言能够“实现”多线程,就代表C语言“支持”多线程?C语言还能够实现面向对象呢,那C语言支持面向对象?

论坛徽章:
0
27 [报告]
发表于 2014-11-17 20:17 |只看该作者
另外,C在高性能服务、计算领域份额也不乐观了,越来越多的服务器编程宁愿采用Java和Python,这和C的基础设施不够亲民都有关系。

C目前比较集中的领域主要是嵌入式。但随着嵌入式设备硬件越来越强,这块领域迟早也是android的地盘,反正我看到很多嵌入式产品直接用android了,开发效率杠杠滴。

所以,C如果固步自封,衰落是迟早的。

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
28 [报告]
发表于 2014-11-17 20:32 |只看该作者
本帖最后由 yulihua49 于 2014-11-17 20:48 编辑
xphh2008 发表于 2014-11-17 19:06
你搞错重点了,不是喜欢不喜欢的问题。C是我最喜欢的编程语言,要不我也不来C版灌水。

MS凭什么要用 ...

我认为,“实现” 是比 “支持” 更高。
一个软件系统,可以说,我支持 XXX 我可以不实现,但我支持你在我这里加入模块实现。
C实现了pthread,还叫 “不支持”?一个 -lpthread 就那么费劲吗?如果你高兴,可以把它合并到基本库里。
原来socket还不在标准库呢,得 -lsocket 。现在不用了,也无所谓。

C语法本来就是几乎什么都没有,一无所有就是它的特点,这使得它的语法极为简单。
也可以这么说,C什么都没有,但什么都支持,在系统功能的层面。这就够了。
C的应用范围,将越来越小,但不会消失。
JAVA好,JVM是C写的。python好,解释器和编译器是C写的。C无处不在。
要增加什么内容,在C++里,随便加。

论坛徽章:
0
29 [报告]
发表于 2014-11-17 21:36 |只看该作者
特别喜欢看到大家为了坚持自己的观点进行义愤填膺的辩论

论坛徽章:
0
30 [报告]
发表于 2014-11-17 22:08 |只看该作者
yulihua49 发表于 2014-11-17 20:32
我认为,“实现” 是比 “支持” 更高。
一个软件系统,可以说,我支持 XXX 我可以不实现,但我支持你在我这里加入模块实现。


我觉得你在强词夺理。

你敢不敢在这里说“C语言支持面向对象”?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP