好久没写多线程了,工作好几年也没怎么大规模的写过多线程,都是成形的架构里写业务逻辑。偶尔自己写了下,各种踩坑。。。

1.string 不是线程安全的

一个特例是std::string。在一些STL的实现厂商(包括MS VC6),使用的是带引用计数的string! 这就意味着可能有两个std::string的实例共享着同一块底层数据。这使得前面说的第一个规则被打破! 

看一下这样的代码:
string s1= “abcd”;
string s2 = s1; 在引用计数的实现版本中,这几句话意味着:先分配一块内存给”abcd”,一个引用计数的数;s1和s2都将引用这块内存,引用计数将为2。引用计数的本意是在把strings传出functions时优化copy行为。 但是这种算法并不是线程安全的! 如果你将s2传给另一个线程,那么就很可能有两个线程企图修改这同一块内存!那将会有不可预料的行为发生。 结论:不要多个线程使用 常字符串 string s1= “abcd”; 这种编译期处理的值? 说不明白。。。

2.pthread_create 参数传递指针问题

http://blog.csdn.net/jfkidear/article/details/7918425

结论:函数传参用值,不要传指针,或者使用 ,额外的队列,线程池

最新文章

  1. PHP---Mysql常用语法(增删改查)
  2. javascript判断手机旋转横屏竖屏
  3. Jenkins配置MSBuild编译.net4.6的项目
  4. Jade之Mixins
  5. spring注解配置启动过程
  6. Android使用service后台更新计划任务
  7. BZOJ3821 : 玄学
  8. 触发onSaveInstanceState和onRestoreInstanceState的时机
  9. git push提示或错误
  10. 编写一个Animal类,具有属性:种类;具有功能:吃、睡。定义其子类Fish 和Dog,定义主类E,在其main方法中分别创建其对象并测试对象的特性。
  11. js初学必知三重点
  12. mysql-error --(ERROR 1135 (HY000): Can't create a new thread (errno 11); if you are not out)
  13. Recipes — Bottle 0.13-dev documentation
  14. [js] 小谈 export (没总结完)
  15. 从一个事件绑定说起 - DOM
  16. SpringBoot 集成Mybatis 连接Mysql数据库
  17. vue mock自己总结
  18. $.ajax ,ajax请求添加请求头,添加Authorization字段
  19. API接口认证
  20. objectLiteral.js

热门文章

  1. Http中Get和Post的区别(转载)
  2. Flutter中集成Font Awesome
  3. Mybatis动态SQL——if,where,trim,choose,set.foreach的用法
  4. uva 1619 - Feel Good || poj 2796 单调栈
  5. 数据可视化——matplotlib(2)
  6. Qwt中鼠标获取坐标点
  7. pg按日,周,月进行数据统计
  8. 推荐给开发者的11个PHP框架(转)
  9. [PostgreSQL]PostgreSQL数据类型格式化函数——字符串和数值间的转换
  10. zk的watcher机制的实现