随笔分类 -  并发编程

摘要:参考 http://www.360doc.com/content/13/0817/11/7377734_307777806.shtml 我的理解,这里指的是用户进程的用户态空间和内核空间,也就是那个3G和1G的?当然,也可能指的是socket的发送接收,文件的发送接收等,都需要系统在内核态来实际的写 阅读全文
posted @ 2017-01-08 13:56 blcblc 阅读(1549) 评论(0) 推荐(1) 编辑
摘要:参考 http://www.startos.com/linux/tips/2011012822078.html 1)Linux和所有的UNIX操作系统都允许通过共享内存在应用程序之间共享存储空间. 2)有两类基本的API函数用于在进程间共享内存:System v和POSIX. (当然,还有mmap, 阅读全文
posted @ 2017-01-08 10:02 blcblc 阅读(8934) 评论(1) 推荐(1) 编辑
摘要:1. 异步化, 以epoll为代表。libevent也是基于epoll而实现的。 2. 消息驱动, 是跟异步化相结合,reactor模式。另有Scala的Actor模式,是完全的消息交互。 3. 一些TCP参数, 比如禁掉Nagle选项,不要打开CORK算法,使得发包和ack不要延迟太多。 4. S 阅读全文
posted @ 2017-01-07 21:31 blcblc 阅读(750) 评论(0) 推荐(0) 编辑
摘要:gdb thread apply all bt 如果你发现有那么几个栈停在 pthread_wait 或者类似调用上,大致就可以得出结论:就是它们几个儿女情长,耽误了整个进程。 注意gdb的版本要高于7.0,之前使用过gdb6.3调试多线程是不行的。 从上图可以看出两个线程都阻塞在wait上,而且还 阅读全文
posted @ 2017-01-06 16:47 blcblc 阅读(6700) 评论(0) 推荐(1) 编辑
摘要:Memory Barrier http://www.wowotech.net/kernel_synchronization/memory-barrier.html 这里面讲了Memory Barrier 对于一个c程序员,我们的编写的代码能所见即所得吗?我们看到的c程序的逻辑是否就是最后CPU运行的 阅读全文
posted @ 2017-01-06 12:47 blcblc 阅读(4014) 评论(0) 推荐(0) 编辑
摘要:spinlock在上一篇文章有提到:http://www.cnblogs.com/charlesblc/p/6254437.html 通过锁数据总线来实现。 而看了这篇文章说明:mutex内部也用到了spinlock http://blog.chinaunix.net/uid-21918657-id 阅读全文
posted @ 2017-01-06 12:35 blcblc 阅读(3014) 评论(0) 推荐(0) 编辑
摘要:bottom-half http://bbs.csdn.net/topics/60226240 在中断,异常和系统调用里看Linux中断服务一般都是在关闭中断的情况下执行的,以避免嵌套而是控制复杂化Linux将一些中断处理分成两部分,第一部分是在关中断的条件下执行的,具有"原子"性,而且是中断发生以 阅读全文
posted @ 2017-01-06 12:09 blcblc 阅读(2073) 评论(0) 推荐(0) 编辑
摘要:今天看wiki,看到一个提到什么什么会陷入 race condition & ABA problem。丫的我没听过ABA呀,那么我去搜了一下,如下: http://www.bubuko.com/infodetail-317006.html 《SpinLock 自旋锁, CAS操作(Compare & 阅读全文
posted @ 2017-01-05 23:30 blcblc 阅读(1446) 评论(0) 推荐(0) 编辑
摘要:今天先是看到多线程级别的内容,然后又看到协程的内容。 基本的领会是,协程是对异步回调方式的一种变换,同样是在一个线程内,协程通过主动放弃时间片交由其他协程执行来协作,故名协程。 而协程很早就有了,那时候因为协程不够公平,很可能不会主要交出执行权;现在卷土重来。 跟异步一样,为了减少线程间切换,而尽量 阅读全文
posted @ 2017-01-02 15:23 blcblc 阅读(1314) 评论(0) 推荐(0) 编辑
摘要:另,线程的资源占用可见:http://www.cnblogs.com/charlesblc/p/6242111.html 进程 & 线程的很多知识可以看这里:http://www.cnblogs.com/charlesblc/p/6135666.html 线程一直是分系统级线程和用户级线程,也就是所 阅读全文
posted @ 2017-01-02 15:22 blcblc 阅读(4336) 评论(0) 推荐(3) 编辑
摘要:https://zhuanlan.zhihu.com/p/20204159 这个系列真的非常好,好好领会学习一下 学习笔记在这里:http://www.cnblogs.com/charlesblc/p/6341265.html 阅读全文
posted @ 2017-01-02 01:02 blcblc 阅读(337) 评论(0) 推荐(0) 编辑
摘要:首先开宗明义,离开业务单独讨论并发,都是扯淡。 就像 https://www.zhihu.com/question/20493166/answer/15998053 这里面说的 谈并发必然要谈业务,空对空地就是扯淡,甭管说得多头头是道。 我们用某银行ATM取款为例:假设一个人从插卡到取完款平均需要2 阅读全文
posted @ 2017-01-01 12:24 blcblc 阅读(2625) 评论(0) 推荐(0) 编辑
摘要:这篇文章还是讲的不错的: http://www.cocoachina.com/game/20150924/13545.html 《开发者详解:端游及手游服务端的常用架构》 整理自知乎,文/韦易笑 开始的部分讲的比较简略。讲到后面大型MMO以及战网游戏,就比较入流了。 开宗明义,手游页游和端游的服务端 阅读全文
posted @ 2017-01-01 11:24 blcblc 阅读(8342) 评论(0) 推荐(0) 编辑
摘要:下了这本书《Java多线程编程指南-设计模式篇》, 还有另一本《JAVA多线程设计模式》,据说内容有重复,结合着看。 阅读全文
posted @ 2016-12-27 15:21 blcblc 阅读(207) 评论(0) 推荐(0) 编辑
摘要:select/poll被监视的文件描述符数目非常大时要O(n)效率很低;epoll与旧的 select 和 poll 系统调用完成操作所需 O(n) 不同, epoll能在O(1)时间内完成操作,所以性能相当高。 epoll不用每次把注册的fd在用户态和内核态反复拷贝。 epoll不同与之前的轮询方 阅读全文
posted @ 2016-12-20 15:17 blcblc 阅读(3525) 评论(0) 推荐(1) 编辑
摘要:之前还是写过蛮多的关于锁的文章的: http://www.cnblogs.com/charlesblc/p/5994162.html 《【转载】Java中的锁机制 synchronized & 偏向锁 & 轻量级锁 & 重量级锁 & 各自》 http://www.cnblogs.com/charle 阅读全文
posted @ 2016-12-16 20:56 blcblc 阅读(2629) 评论(0) 推荐(0) 编辑
摘要:先看的这篇文章:http://blog.csdn.net/qq910894904/article/details/41699541 以nginx为代表的事件驱动的异步server正在横扫天下,那么事件驱动模型会是server端模型的终点吗? 我们可以深入了解下,事件驱动编程的模型。 事件驱动编程的架 阅读全文
posted @ 2016-12-16 11:38 blcblc 阅读(1689) 评论(0) 推荐(0) 编辑
摘要:试了一下,和Java完全不同。 注意Java和C++对于多线程里面的一个线程抛出异常的影响,完全不同。 Java里面,对于主线程和其他线程完全不受影响; C++里面,整个程序会退出,所有线程都会受影响。 Java的多线程与异常的关系,可以看这里:http://www.cnblogs.com/char 阅读全文
posted @ 2016-12-15 23:22 blcblc 阅读(7719) 评论(0) 推荐(1) 编辑
摘要:具体可以看这篇文章:http://www.cnblogs.com/charlesblc/p/6171103.html 都写在里面了,为了避免更新不一致,这里就不再写一遍了。只给个链接。 注意Java和C++对于多线程里面的一个线程抛出异常的影响,完全不同。 Java里面,对于主线程和其他线程完全不受 阅读全文
posted @ 2016-12-13 23:58 blcblc 阅读(1680) 评论(0) 推荐(0) 编辑
摘要:Callable是Java里面与Runnable经常放在一起说的接口。 Callable是类似于Runnable的接口,实现Callable接口的类和实现Runnable的类都是可被其他线程执行的任务。 Callable的接口定义如下; public interface Callable<V> { 阅读全文
posted @ 2016-12-13 18:56 blcblc 阅读(5415) 评论(0) 推荐(0) 编辑