摘要:
查了几天资料,总觉得还是没有搞懂,在这里现把我的心得说出来,不对的修改,大家一起讨论。提到内存屏障,不得不提到这几个东西:1。编译器2。CPU3。volatile4。memory损坏描述符内存屏障的意思是说:为了防止编译器和硬件的不正确优化,使得对存储器的访问顺序(其实就是变量)和书写程序时的访问顺序不一致而提出的一种解决办法。因为内存屏障这个东西和硬件也是息息相关的,比如在arm上(至少在armV6之前)就没有串行化的指令(而x86上就有),所以arm上的内存屏障就是这样:asm volatile("":::"memory");有人说这个操作为空,我不 阅读全文
posted @ 2011-08-17 17:04
by碳水化合物
阅读(992)
评论(0)
推荐(0)
摘要:
boost库中asio的操作常常是异步操作。这点也会常常需要运行io_service线程与UI线程同步。线程同步总是让人有些头疼。一个简化的办法是将UI线程的事件通过post方法同步到io_service的线程执行,尽力避免此类同步。诸如socket之类需要尽快响应的类而言,智能指针是个好选择。但是存在一个问题,就是当io_service线程结束,而非所有的post操作都已经返回。会有清理内存,及使用到野指针的危险。一个替代办法是,等待所有的post完成之后再介绍io_service线程。因为所有的的post都完成之后,即便不调用io_service.stop函数此线程也会结束。将以上两点结合 阅读全文
posted @ 2011-08-17 14:28
by碳水化合物
阅读(170)
评论(0)
推荐(0)
浙公网安备 33010602011771号