
多线程
文章平均质量分 79
jfkidear
这个作者很懒,什么都没留下…
展开
-
多线程程序常见Bug剖析(上)
多线程程序常见Bug剖析(上)编写多线程程序的第一准则是先保证正确性,再考虑优化性能。本文重点分析多线程编程中除死锁之外的另两种常见Bug:违反原子性(Atomicity Violation)和违反执行顺序(Ordering Violation)。现在已经有很多检测多线程Bug的工具,但是这两种Bug还没有工具能完美地帮你检测出来,所以到目前为止最好的办法还是程序员自己有意识的避免转载 2014-04-11 14:54:02 · 2188 阅读 · 0 评论 -
Java 程序死锁问题原理及解决方案
Java 程序死锁问题原理及解决方案本文首先介绍了死锁发生的原因,并通过一个示例解释了死锁发生的前提情况。然后通过 JVM 的 jstack 工具演示了如何确定一个死锁的发生。最后对死锁的预防、恢复等方式进行了解释。0 评论:周 明耀, 技术带头人、项目经理, HikVision2015 年 8 月 24 日内容转载 2016-03-17 13:19:26 · 1278 阅读 · 0 评论 -
避免死锁
多线程编程指南Previous: 同步线程Next: 线程代码的一些基本原则避免死锁死锁是指永久阻塞一组争用一组资源的线程。仅因为某个线程可以继续执行,并不表示不会在某个其他位置发生死锁。导致死锁的最常见错误是自死锁或递归死锁。在自死锁或递归死锁中,线程尝试获取已被其持有的锁。递归死锁是在编程时很容易犯的错误。例如转载 2016-03-21 16:36:12 · 510 阅读 · 0 评论 -
隐藏的线程死锁
首页所有文章资讯Web架构基础技术书籍教程我要投稿更多频道 »- 导航条 -首页所有文章资讯Web架构基础技术书籍教程我要投稿更多频道 »- iOS- Python- Android- Web前端Java并发:隐藏的线程死锁2014/04/04 | 分类: WEB开发 | 2转载 2016-03-21 17:49:33 · 764 阅读 · 0 评论 -
多线程的那点儿事(之死锁)
多线程的那点儿事(之死锁)标签: 多线程编程c2011-12-02 20:37 13185人阅读 评论(5) 收藏 举报 分类: 多线程编程(19) 版权声明:本文为博主原创文章,未经博主允许不得转载。【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 相信有转载 2016-03-21 21:11:09 · 410 阅读 · 0 评论 -
多线程死锁调试小技巧
多线程死锁调试小技巧 据说再高的高手在写多线程程序的时候都难确保不会产生死锁,死锁的调试也就成为一个比较常见的问题,假设有下面这样一个问题: 一个正在生产环境下运行的进程死锁了,或者你只是在跑一个程序,并没有在调试器里面打开它,然后发现没有响应,日志输出也停止了。由于你是一个有经验的程序员,会想到“我刚刚加上了新的锁策略,不一定稳定,这可能是死锁了“。但是你不想就这么杀转载 2016-03-21 21:18:25 · 541 阅读 · 0 评论 -
如何解决多线程程序中的死锁问题
如何解决多线程程序中的死锁问题 (2011-05-03 15:10:13)转载▼标签: 多线程 死锁 解决 it 分类: java 经常在技术论坛上看到有人虎目含泪地向人哭诉被多线程程序中的死锁问题搞得欲死欲仙,最后扔下狠话:再不用多线程了,要用多进程。 的确,死锁问转载 2016-03-21 21:22:19 · 834 阅读 · 0 评论 -
进程&线程&死锁
进程&线程&死锁标签: 任务多线程算法存储windows磁盘2011-09-22 22:02 2608人阅读 评论(0) 收藏 举报版权声明:本文为博主原创文章,未经博主允许不得转载。 线程与进程 程序是计算机指令的集合,以文件形式存储在磁盘上。进程就是一个执行中的(运行的)程序,每一个进程都有其独立的内存空间和系统资转载 2016-03-21 21:26:57 · 493 阅读 · 0 评论 -
一个 Linux 上分析死锁的简单方法
一个 Linux 上分析死锁的简单方法本文主要介绍一种在 Linux 上分析死锁问题的简单方法。主要介绍死锁的基本概念,以及如何使用 pstack 和 gdb 对死锁问题进行分析。2 评论:于 东海, 软件工程师, IBM宋 波, 软件工程师, IBM池 辰, 软件工程师, IBM2012 年 8 月 10 日转载 2016-03-21 21:50:50 · 1258 阅读 · 0 评论 -
通用线程:POSIX 线程详解,第 3 部分
通用线程:POSIX 线程详解,第 3 部分使用条件变量提高效率本文是 POSIX 线程三部曲系列的最后一部分,Daniel 将详细讨论如何使用条件变量。条件变量是 POSIX 线程结构,可以让您在遇到某些条件时“唤醒”线程。可以将它们看作是一种线程安全的信号发送。Daniel 使用目前您所学到的知识实现了一个多线程工作组应用程序,本文将围绕着这一示例而进行讨论。转载 2014-08-02 22:02:38 · 549 阅读 · 0 评论 -
自旋锁
5.5. 自旋锁上一页 第 5 章 并发和竞争情况 下一页5.5. 自旋锁对于互斥, 旗标是一个有用的工具, 但是它们不是内核提供的唯一这样的工具. 相反, 大部分加锁是由一种称为自旋锁的机制来实现. 不象旗标, 自旋锁可用在不能睡眠的代码中, 例如中断处理. 当正确地使用了, 通常自旋锁提供了比旗标更高的性能. 然而, 它们确实带来对它转载 2014-08-02 22:47:25 · 554 阅读 · 0 评论 -
Pthreads并行编程之spin lock与mutex性能对比分析
Pthreads并行编程之spin lock与mutex性能对比分析POSIX threads(简称Pthreads)是在多核平台上进行并行编程的一套常用的API。线程同步(Thread Synchronization)是并行编程中非常重要的通讯手段,其中最典型的应用就是用Pthreads提供的锁机制(lock)来对多个线程之间共 享的临界区(Critical Section)进行转载 2014-04-11 15:45:11 · 663 阅读 · 0 评论 -
多线程程序常见Bug剖析(下)
多线程程序常见Bug剖析(下)上一篇文章我们专门针对违反原子性(Atomicity Violation)的多线程程序Bug做了剖析,现在我们再来看看另一种常见的多线程程序Bug:违反执行顺序(Ordering Violation)。简单来说,多线程程序各个线程之间交错执行的顺序的不确定性(Non-deterministic)是造成违反执行顺序Bug的根源[注1]。正是因为这转载 2014-04-11 15:05:53 · 1384 阅读 · 0 评论 -
浅析C++多线程内存模型
浅析C++多线程内存模型注:本文发表于《程序员》2011年第6期并行编程专栏,略有删改。在即将到来的C++1x标准中,一个重大的更新就是引入了C++多线程内存模型。本文的主要目的在于介绍C++多线程内存模型涉及到的一些原理和概念,以帮助大家理解C++多线程内存模型的作用和意义。1. 顺序一致性模型(Sequential Consistency)在介绍C++多转载 2014-04-11 15:31:35 · 716 阅读 · 0 评论 -
《程序员的自我修养》中关于加锁不能保证线程安全的一个错误
《程序员的自我修养》中关于加锁不能保证线程安全的一个错误在《程序员的自我修养 — 链接装载与库》一书第28页“过度优化”这一节中,作者提到了编译器优化可能造成多线程bug的情况(我手中的是09年6月第二次印刷那版)。原文如下:线程安全是一个非常烫手的山芋,因为即使合理的使用了锁,也不一定能保证线程安全,这是源于落后的编译器技术已经无法满足日益增长的并发需求。很多看似无错转载 2014-04-11 15:36:02 · 1041 阅读 · 1 评论 -
为什么程序员需要关心顺序一致性(Sequential Consistency)而不是Cache一致性(Cache Coherence?)
为什么程序员需要关心顺序一致性(Sequential Consistency)而不是Cache一致性(Cache Coherence?)最后一次修改:2010年11月11日本文所讨论的计算机模型是Shared Memory Multiprocessor,即我们现在常见的共享内存的多核CPU。本文适合的对象是想用C++或者Java进行多线程编程的程序员。本文主要包括对Se转载 2014-04-11 15:15:45 · 706 阅读 · 0 评论 -
关于pthread_cond_signal与pthread_cond_broadcast的使用说明
关于pthread_cond_signal与pthread_cond_broadcast的使用说明分类: Java C/C++2006-08-23 10:59 11330人阅读 评论(3) 收藏 举报signal多线程struct 在code review中,我会发现很多人喜欢在pthread_mutex_lock()和pthread_mutex_unlo转载 2014-08-02 21:28:04 · 1657 阅读 · 0 评论 -
POSIX 线程详解
eveloperWorks 中国技术主题Linux文档库POSIX 线程详解一种支持内存共享的简捷工具POSIX(可移植操作系统接口)线程是提高代码响应和性能的有力手段。在本系列中,Daniel Robbins 向您精确地展示在编程中如何使用线程。其中还涉及大量幕后细节,读完本系列文章,您完全可以运用 POSIX 线程创建多线程程序。5 评论转载 2014-08-02 21:50:33 · 549 阅读 · 0 评论 -
读写锁的特性
读写锁的特性分类: 多线程-Windows2011-11-09 21:01 406人阅读 评论(0) 收藏 举报threadaccesstestingnullwindows数据结构Summary:分析读写锁的特性,代码以Windows为例。但是其实读写锁最先是Linux里面有的,所以说,下面的分析,适用于Linux和Windows平台。Wiki:ht转载 2014-08-02 22:34:06 · 1096 阅读 · 0 评论 -
进程/线程同步的方式和机制,进程间通信
进程/线程同步的方式和机制,进程间通信一、进程/线程间同步机制。临界区、互斥区、事件、信号量四种方式临界区(Critical Section)、互斥量(Mutex)、信号量(Semaphore)、事件(Event)的区别1、临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。在任意时刻只允许一个线程对共享资源进行访问,如果有多个线程试图访问公共资转载 2016-09-17 10:28:46 · 425 阅读 · 0 评论 -
进程的同步与通信,进程与线程同步的区别,进程与线程通信的区别
进程的同步与通信,进程与线程同步的区别,进程与线程通信的区别2013-08-10 15:45:31这两天看进程的同步与通信,看了几本书上的介绍,也从网上搜了很多资料,越看越迷惑,被这几个问题搞得很纠结。进程同步与互斥的区别?进程的同步方式有哪些?进程的通信方式有哪些?进程同步与通信的区别是什么?线程的同步/通信与进程的同步/通信有区别吗?在好多教材上(包括国内与国外的)也没转载 2016-09-17 10:46:39 · 3253 阅读 · 1 评论 -
shared_ptr线程安全性分析
shared_ptr线程安全性分析2012-12-13 22:34 8668人阅读 评论(5) 收藏 举报 分类:C++(16) 版权声明:本文为博主原创文章,未经博主允许不得转载。目录(?)[+]shared_ptr线程安全性分析正如《STL源码剖析》所讲,“源码之前,了无秘密”。本文基于shared转载 2016-10-24 19:19:04 · 445 阅读 · 0 评论 -
为什么多线程读写 shared_ptr 要加锁?
为什么多线程读写 shared_ptr 要加锁?2013-01-28 05:13 54952人阅读 评论(54) 收藏 举报 分类:c++(53) C++ 工程实践(16) 版权声明:本文为博主原创文章,未经博主允许不得转载。目录(?)[+]为什么多线程读写 shared_ptr 要加锁?转载 2016-10-24 19:25:34 · 631 阅读 · 0 评论 -
多线程的那点儿事(之死锁)
多线程的那点儿事(之死锁)标签: 多线程编程c2011-12-02 20:37 16519人阅读 评论(6) 收藏 举报 分类:多线程编程(19) 版权声明:本文为博主原创文章,未经博主允许不得转载。【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 相信有过多线转载 2016-09-29 14:31:19 · 347 阅读 · 0 评论 -
再次深入分析不可重入函数---请小心使用localtime函数
再次深入分析不可重入函数---请小心使用localtime函数2014-04-24 23:53 2792人阅读 评论(2) 收藏 举报 分类:C/C++语言(371) 软件开发进阶(509) 版权声明:本文为博主原创文章,转载时请务必注明本文地址, 禁止用于任何商业用途, 否则会用法律维权。 之前, 我们讲过不可重入函转载 2016-10-18 22:12:00 · 1676 阅读 · 0 评论 -
STRTOK函数和STRTOK_R函数
STRTOK函数和STRTOK_R函数注:本文转载自博客园,感谢作者整理!1.一个应用实例网络上一个比较经典的例子是将字符串切分,存入结构体中。如,现有结构体typedef struct person{ char name[25]; char sex[10]; char age[4]; }Person;需从字符串 ch转载 2016-10-18 22:46:06 · 294 阅读 · 0 评论 -
关于函数strtok和strtok_r的使用要点和实现原理(一)
关于函数strtok和strtok_r的使用要点和实现原理(一)标签: buffernulllibrary百度文档网络2011-11-11 10:53 11048人阅读 评论(7) 收藏 举报 分类:Linux(11) C/C++(8) 目录(?)[+] strtok函数的使用是一个老生常谈的问题了。该函数的转载 2016-10-18 22:52:15 · 361 阅读 · 0 评论 -
C++多线程下的rand()问题
C++多线程下的rand()问题标签: 多线程c++nullstructurethreadstruct2012-03-20 14:18 2895人阅读 评论(2) 收藏 举报 【问题描述】在主线程里面srand()了一次,然后在线程函数里面使用rand(),可是每个线程rand出来的数列顺序一样,而且每次运行都一样。结构如图所示:func1出来的序列是1转载 2016-10-18 22:58:32 · 3680 阅读 · 1 评论 -
线程安全——strtok VS strtok_r
线程安全——strtok VS strtok_r标签: nullstringtokentokenizebufferfunction2010-01-07 22:50 4878人阅读 评论(0) 收藏 举报 分类:C/C++(63) 目录(?)[+]#includechar *strtok(char* restri转载 2016-10-18 23:01:47 · 1334 阅读 · 0 评论 -
Java CAS 和ABA问题
Java CAS 和ABA问题2014-06-03 23:42 by Loull, 1375 阅读, 0 评论, 收藏, 编辑独占锁:是一种悲观锁,synchronized就是一种独占锁,会导致其它所有需要锁的线程挂起,等待持有锁的线程释放锁。乐观锁:每次不加锁,假设没有冲突去完成某项操作,如果因为冲突失败就重试,直到成功为止。一、CAS 操作乐观锁用到的机制就是CAS转载 2016-10-24 17:04:22 · 418 阅读 · 0 评论 -
死锁,活锁和饥饿
死锁,活锁和饥饿什么是死锁死锁:是指两个或两个以上的进程(或线程)在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。 死锁发生的条件互斥条件:线程对资源的访问是排他性的,如果一个线程对占用了某资源,那么其他线程必须处于等待状态,转载 2016-10-24 16:55:58 · 863 阅读 · 0 评论 -
互斥锁,自旋锁与自适应自旋锁
互斥锁,自旋锁与自适应自旋锁标签: 线程安全锁自适应锁互斥锁与自旋锁Java不同的线程锁2016-05-03 13:39 79人阅读 评论(0) 收藏 举报 分类:Java基础(21) 版权声明:本文为博主原创文章,未经博主允许不得转载。目录(?)[+]线程安全与锁的优化互斥锁:从 实现原理转载 2016-11-04 09:36:15 · 1031 阅读 · 0 评论 -
深刻理解Linux进程间通信(IPC)
深刻理解Linux进程间通信(IPC)一个大型的应用系统,往往需要众多进程协作,进程(Linux进程概念见附1)间通信的重要性显而易见。本系列文章阐述了Linux环境下的几种主要进程间通信手段,并针对每个通信手段关键技术环节给出详细实例。为达到阐明问题的目的,本文还对某些通信手段的内部实现机制进行了分析。5 评论郑彦兴 (mlinux@163.com)国转载 2016-09-17 10:51:09 · 363 阅读 · 0 评论 -
使用C++实现简单线程池v1.0
使用C++实现简单线程池v1.02013-06-04 11:05 15331人阅读 评论(21) 收藏 举报 分类:C++点滴感悟(17) 版权声明:本文为博主原创文章,未经博主允许不得转载。 C++实现简单线程池。 欢迎转载,转载请注明原出处:http:转载 2016-09-18 16:50:06 · 549 阅读 · 0 评论 -
临界区,互斥量,信号量,事件的区别
临界区,互斥量,信号量,事件的区别标签: nullfuniostreamattributesmfcsemaphore2012-05-14 14:20 3984人阅读 评论(0) 收藏 举报 分类:MFC(139) 版权声明:本文为博主原创文章,未经博主允许不得转载。目录(?)[+]临界区转载 2016-09-19 09:42:05 · 1447 阅读 · 0 评论 -
gdb调试多进程和多线程命令
gdb调试多进程和多线程命令标签: 多线程threaddebuggingnullcentosfile2012-08-17 12:27 19907人阅读 评论(2) 收藏 举报 分类:linux(59) 版权声明:本文为博主原创文章,未经博主允许不得转载。1. 默认设置下,在调试多进程程序时GDB只会调试主进程。但是GDB(>V7.转载 2016-09-19 20:17:28 · 712 阅读 · 0 评论 -
GDB调试多线程程序
GDB调试多线程程序标签: GDB调试多线程C++C2013-07-17 21:29 4383人阅读 评论(0) 收藏 举报 分类:程序调试(19) 版权声明:本文为博主原创文章,未经博主允许不得转载。info threads 显示当前可调试的所有线程,每个线程会有一个GDB为其分配的ID,后面操作线程的时候会用到这个ID。转载 2016-09-21 17:11:53 · 427 阅读 · 0 评论 -
自旋锁
自旋锁 编辑本词条缺少信息栏、名片图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧!自旋锁是专为防止多处理器并发而引入的一种锁,它在内核中大量应用于中断处理等部分(对于单处理器来说,防止中断处理中的并发可简单采用关闭中断的方式,即在标志寄存器中关闭/打开中断标志位,不需要自旋锁)。目录1 概念2 自旋锁-原理3 自旋锁-实转载 2016-10-11 17:31:00 · 484 阅读 · 0 评论 -
深入分析Linux自旋锁
深入分析Linux自旋锁 2012-07-05 23:39:36分类:原文地址:深入分析Linux自旋锁 作者:tekkamanninja前言: 在复习休眠的过程中,我想验证自旋锁中不可休眠,所以编写了一个在自旋锁中休眠的模块。但是在我的ARMv7的单核CPU(TI的A8芯片)中测试的时候,不会锁死,并且自旋锁可以多次获转载 2016-10-11 17:41:01 · 369 阅读 · 0 评论 -
C++11实现自旋锁
C++11实现自旋锁By 破晓 发表于 2014-04-20文章目录1. 自旋锁(Spinlock)2. 自旋锁的原理3. 使用C++11的原子操作实现自旋锁3.1. 指定内存序提高性能3.2. 不使用CAS(compare-and-swap)的实现3.3. 使用std::atomic_flag的实现自旋锁(Spinlock)自旋锁是一种用于保护多线转载 2016-11-04 09:34:30 · 566 阅读 · 0 评论