并行
横云断岭
在国内大型互联网公司负责6K+应用,80K+机器的Spring Boot微服务技术落地,关注开发体验,微服务,APM,应用诊断,dubbo开源。
Github: https://github.com/hengyunabc
展开
-
并行编程之多线程共享非volatile变量,会不会可能导致线程while死循环
背景大家都知道线程之间共享变量要用volatile关键字。但是,如果不用volatile来标识,会不会导致线程死循环?比如下面的伪代码:static int flag = -1;void thread1(){ while(flag > 0){ //wait or do something }}void thread2(){ //do something f原创 2014-05-25 01:30:26 · 6187 阅读 · 3 评论 -
C++11的thread代码分析
本文分析的是llvm libc++的实现:http://libcxx.llvm.org/class threadthread类直接包装了一个pthread_t,在linux下实际是unsigned long int。class thread{ pthread_t __t_; id get_id() const _NOEXCEPT {return __t_;}}原创 2014-06-29 20:50:57 · 12954 阅读 · 2 评论 -
从一篇Blog看两个并发编程错误
发现公司支付宝接入的代码有点神奇,在网上搜索了下,找到原始版本。估计有不少人都是抄那份代码的。原文在:http://blog.csdn.net/simdanfeg/article/details/9011603 Android支付接入(一):支付宝但是代码里有两个明显的并发问题,尽管在Android下可能不会有问题。下面摘抄一段: public class Mobi原创 2014-07-03 20:03:00 · 2127 阅读 · 1 评论 -
C++11中once_flag,call_once实现分析
本文的分析基于llvm的libc++,而不是gun的libstdc++,因为libstdc++的代码里太多宏了,看起来蛋疼。在多线程编程中,有一个常见的情景是某个任务只需要执行一次。在C++11中提供了很方便的辅助类once_flag,call_once。声明首先来看一下once_flag和call_once的声明:struct once_flag{ constexpr原创 2014-06-22 01:29:00 · 15047 阅读 · 2 评论 -
C++11中的mutex, lock,condition variable实现分析
本文分析的是llvm libc++的实现:http://libcxx.llvm.org/C++11中的各种mutex, lock对象,实际上都是对posix的mutex,condition的封装。不过里面也有很多细节值得学习。std::mutex先来看下std::mutex:包增了一个pthread_mutex_t __m_,很简单,每个函数该干嘛就干嘛。class mutex原创 2014-06-22 22:57:32 · 13613 阅读 · 1 评论 -
并行编程之条件变量(posix condition variables)
在整理Java LockSupport.park()的东东,看到了个"Spurious wakeup",重新梳理下。首先来个《UNIX环境高级编程》里的例子:#include struct msg { struct msg *m_next; /* ... more stuff here ... */};struct msg *workq;pthread_cond_t qread原创 2014-06-02 00:24:44 · 7093 阅读 · 2 评论 -
Java的LockSupport.park()实现分析
LockSupport类是Java6(JSR166-JUC)引入的一个类,提供了基本的线程同步原语。LockSupport实际上是调用了Unsafe类里的函数,归结到Unsafe里,只有两个函数: public native void unpark(Thread jthread); public native void park(boolean isAbsolute, long ti原创 2014-06-03 02:52:12 · 49528 阅读 · 17 评论