文章分类 - 并发编程
程序运行占用CPU较高的时候,查看每个线程的CPU使用情况
摘要:1.使用命令 top -H -p pid(程序进程号)查看该进程下所有线程占用CPU情况,做一下排序 2.pstack保存该进程的线程快照,然后根据1中所显示的线程号查看具体线程堆栈信息
阅读全文
关于互斥量
摘要:1.使用条件变量做线程同步的时候,使用while而不是if,是因为可能会出现假唤醒的情况, while(!flag) { cond.wait(lock); } 2.notify_one会唤醒一个等待该变量的线程,若没有线程等待,则什么也不做,若有多个线程等待,无法确定会唤醒哪一个。 3.关于几种互斥
阅读全文
关于linux下的死锁(程序卡住)的定位检测
摘要:定位方法:(1)如系统存在运行日志,首先分析日志信息。(2)利用pstack工具打印出此时系统的存在线程堆栈快照。(3)有些阻塞栈可能是因为它需要等待前面的线程执行结束才可以执行,所以要先确定依赖关系。(4)若问题可以复现,可以利用gdb调试系统,但若不确定问题是否可以复现,则推荐不要使用gdb,
阅读全文
GCC内置的原子操作函数
摘要:在多进程(线程)访问资源时,能够确保所有其他的进程(线程)都不在同一时间内访问相同的资源。原子操作(atomic operation)是不需要synchronized。所谓原子操作是指不会被线程调度机制打断的操作;这种操作一旦开始,就一直运行到结束,中间不会有任何 context switch (切
阅读全文
浙公网安备 33010602011771号