免费注册 查看新帖 |

Chinaunix

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

[c++]类和线程怎么结合{有码) [复制链接]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
61 [报告]
发表于 2012-06-25 10:36 |只看该作者
本帖最后由 群雄逐鹿中原 于 2012-06-25 10:40 编辑

模板是好玩的东西,不玩模板的程序员,不是真正的C++程序员。

论坛徽章:
0
62 [报告]
发表于 2012-06-25 12:14 |只看该作者
回复 91# OwnWaterloo


    有些东西C接口是不提供的。比如每个线程有一组相关的数据,把他们包装到一起,每次得到线程指针的时候,也同时得到了相关的数据,多好,不用再调用额外的API去查询什么了。就跟字符串一样,字符串的核心不就是char *吗,C标准库已经提供了一组关于char *的函数了,为啥还要包装成string?还不是包装后更好用,得到一个string,不光得到的是那个char *,还得到了长度等信息,虽然大家都知道最终操纵的就是里面那个char *,甚至调用的就是C标准库。

我还包装过socket,把socket和之上未完成的任务包装在一起,下次select出来的时候继续,任务就是应用层协议的具化。

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
63 [报告]
发表于 2012-07-04 17:56 |只看该作者
回复 62# sonicling

关于char*与string。
1. 如果你是指string本身

这就不是我说的将C api换汤不换药的搞成C++ class了。
char*与string之间的区别,相比:

  1. class file {
  2.       FILE* p_;
  3. public:
  4.       ... fread(...) { return ::fread(...); }
  5. };
复制代码
与FILE*之间的区别,这能比吗?
我说的是后一对这种情况。

2. 如果你是指在object-based化时顺带将string作为参数。

比如:

  1. file::printf(std::string const& fmt, ...)
复制代码
甚至

  1. class file {
  2. public:
  3. static int remove(std::string const& f) { ... }
  4. };
复制代码
那这种所谓的objecte-based化同样没有意义,可以去除。实现一个重载并使用string作为参数就可以了。

  1. int remove(std::string const& f) { return remove(f.c_str()); }
复制代码
string与char*是很不相同的概念,分别使用它们作为参数的remove也是稍有区别的。
但file这种东西,真要说它和FILE*有不同,那也就是一层纸的区别。

其实就算是remove(string)这种代码,我都不太愿意做。
这种称谓"垫片"的技巧虽然用起来确实可能会很方便,但会让两个模块间交互的方式陡增且混乱。
这也是C++会被C程序员(嗯,@starwing83,我就是在说你)批评"不干净"的一个原因。
如果真要这么做,那我肯定要尽可能地 —— 文档、命名空间、不同头文件等许多方式 —— 让用户知道哪些是primitive,哪些是auxiliary。


关于线程、socket,可能性太多,若像上面那样对每种猜测都作解释就太麻烦了…… 还请明示……

论坛徽章:
11
未羊
日期:2013-12-16 12:45:4615-16赛季CBA联赛之青岛
日期:2016-04-11 19:17:4715-16赛季CBA联赛之广夏
日期:2016-04-06 16:34:012015亚冠之卡尔希纳萨夫
日期:2015-11-10 10:04:522015亚冠之大阪钢巴
日期:2015-07-30 18:29:402015亚冠之城南
日期:2015-06-15 17:56:392015亚冠之卡尔希纳萨夫
日期:2015-05-15 15:19:272015亚冠之山东鲁能
日期:2015-05-14 12:38:13金牛座
日期:2014-12-04 15:34:06子鼠
日期:2014-10-16 13:40:4715-16赛季CBA联赛之八一
日期:2016-07-22 09:41:40
64 [报告]
发表于 2012-07-04 18:55 |只看该作者
群雄逐鹿中原 发表于 2012-06-21 15:38
尔等根本体会不到写C++的乐趣以下为 my_pthread.h


才看到, 这一通戏法变的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP