linux多线程
David_xtd
这个作者很懒,什么都没留下…
展开
-
秒杀多线程第十二篇 多线程同步内功心法——PV操作上
阅读本篇之前推荐阅读以下姊妹篇:《秒杀多线程第四篇一个经典的多线程同步问题》《秒杀多线程第五篇经典线程同步关键段CS》《秒杀多线程第六篇经典线程同步事件Event》《秒杀多线程第七篇经典线程同步互斥量Mutex》《秒杀多线程第八篇经典线程同步信号量Semaphore》《秒杀多线程第九篇经典线程同步总结关键段事件互斥量信号量》《秒杀多线程第十篇生产者消费者问题》《秒杀转载 2013-05-25 15:29:32 · 995 阅读 · 0 评论 -
正确使用pthread_create,防止内存泄漏
近日,听说pthread_create会造成内存泄漏,觉得不可思议,因此对posix(nptl)的线程创建和销毁进行了分析。分析结果:如果使用不当,确实会造成内存泄漏。产生根源:pthread_create默认创建的线程是非detached的。预防方式:要么创建detached的线程,要么线程线程的start_routine结束之前detached,要么join转载 2013-11-20 10:32:06 · 11456 阅读 · 0 评论 -
通用线程:POSIX 线程详解,第 3 部分
通用线程:POSIX 线程详解,第 3 部分使用条件变量提高效率Daniel Robbins, 总裁兼 CEO, Gentoo Technologies, Inc.简介: 本文是 POSIX 线程三部曲系列的最后一部分,Daniel 将详细讨论如何使用条件变量。条件变量是 POSIX 线程结构,可以让您在遇到某些条件时“唤醒”线程。可以将它们看作是一种线程安全的信号发送。D转载 2013-07-25 11:21:35 · 973 阅读 · 0 评论 -
pthread_detach()函数
创建一个线程默认的状态是joinable。如果一个线程结束运行但没有被join,则它的状态类似于进程中的Zombie Process,即还有一部分资源没有被回收(退出状态码).所以创建线程者应该调用pthread_join来等待线程运行结束,并可得到线程的退出代 码,回收其资源(类似于wait,waitpid) 。但是调用pthread_join(pthread_id)后,如果该线程没转载 2013-07-19 17:45:39 · 6213 阅读 · 0 评论 -
pthread_cond_wait()用法分析
很久没看APUE,今天一位朋友问道关于一个mutex的问题,又翻到了以前讨论过的东西,为了不让自己忘记,把曾经的东西总结一下。先大体看下网上很多地方都有的关于pthread_cond_wait()的说明: 条件变量 条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待"条件变量的条件成立"而挂起;另一个线程使"条件成立"(给出条件转载 2013-07-17 14:00:23 · 969 阅读 · 0 评论 -
Linux中查看进程的多线程
在SMP系统中,我们的应用程序经常使用多线程的技术,那么在Linux中如何查看某个进程的多个线程呢?本文介绍3种命令来查看Linux系统中的线程(LWP)的情况:在我的系统中,用qemu-system-x86_64命令启动了一个SMP的Guest,所以有几个qemu的线程,以此为例来说明。1. pstree 命令,查看进程和线程的树形结构关系。View Code B转载 2013-07-02 09:44:32 · 2341 阅读 · 0 评论 -
使用pthread_create时参数的传递
问题:使用pthread_create()函数创建线程的时候,需要将一个类型为u8(unsigned char)的变量作为参数传送到线程函数void turnon_RelaySameTime(void *relayState)中;要传递的变量:u8 ss_relay;创建线程:retval = pthread_create(&relayOn_thread, &att原创 2012-09-10 10:06:38 · 4644 阅读 · 1 评论 -
pthread_create 内存泄漏 valgrind
pthread_create()在使用的过程中遇到的一个问题: 今天在使用线程的时候出现了一个问题,利用valgrind监测程序的运行时出现了memory leak。感觉到很奇怪,这样的情况应该不会发生的啊,毕竟是系统的函数。去网上搜了下,发现国内国外都有这个问题 呵呵。大概了解了下原因:创建的线程需要进行join或者detach状态,这样才能保证创建线程过程中分配的内存得以释放,转载 2013-05-26 22:27:50 · 1109 阅读 · 0 评论 -
关于pthread_mutex_t的初始化
class MyLock{private: pthread_mutex_t m_lock;public: MyLock() {// m_lock = PTHREAD_MUTEX_INITIALIZER; //使用这种方法初始化时GCC编译无法通过 pthread_mutex_init(&m_lock,NULL);转载 2014-02-07 09:29:43 · 14490 阅读 · 0 评论