本帖最后由 xtlx2000 于 2012-05-26 07:36 编辑 自己联系的某个应用程序中:调用了pthread_cond_wait()总是阻塞在这里,检查了pthread_cond_signal()应该没什么问题,用gdb跟踪了下,发现在相应线程在phread_cond_wait()意外终止了,请问是什么原因?请赐教。。
我在A线程中调用pthread_cancel函数来终止B线程,它们不是同一类线程,但在同一个进程中。终止没有达到要求的效果? 运行环境为HP UNix ,B线程没有设置取消属性,用系统默认值。 程序运行时用glance可以观察到,调用pthread_cancel函数前,程序有60个线程,希望调用10次pthread_cancel函数终止10个线程(每次终止不同的线程号),每次调用返回均为0,但是调用后由glance观测到程序还有59个线程,只终止了一个? 为什么那? 请大...
我在A线程中调用pthread_cancel函数来终止B线程,它们不是同一类线程,但在同一个进程中。终止没有达到要求的效果? 运行环境为HP UNix ,B线程没有设置取消属性,用系统默认值。 程序运行时用glance可以观察到,调用pthread_cancel函数前,程序有60个线程,希望调用10次pthread_cancel函数终止10个线程(每次终止不同的线程号),每次调用返回均为0,但是调用后由glance观测到程序还有59个线程,只终止了一个? 为什么那? 请大...
本帖最后由 Cyberman.Wu 于 2010-10-16 14:52 编辑 目前对于这部分的源代码没搞清楚具体是跑到哪部分的,uclibc中有三份实现,有一个是直接调用kill(), 而NTPL的那个没看明白。 想知道是否线程在内核态运行的时候也有可能会被直接杀死,有没有可能在内核态得到一些锁的情况下 直接被终止掉?目前遇到一个问题,一个进程是通过TAP和内核协议栈通信,另一个进程中有线程会动态 join/leave某些Multicast组,这些线程可以会被canc...
非分离线程在终止后,必须要有一个线程用 join 来等待它。否则,不会释放该线程的资源以供新线程使用,而这通常会导致内存泄漏。因此,如果不希望线程被等待,请将该线程作为分离线程来创建。 请问线程终止后,调用pthread_join()前,非分离线程未释放的是什么呢?是线程ID和状态么?
1 pthread_creat.c /* *gcc thread_creat2.c -o thread_creat2 -lpthread */ #include pthread.h> #include stdio.h> /* print_function 的参数 */ struct char_print_parms { /* 用于输出的字符 */ char character; /* 输出的次数 */ int count; }; /* 按照 PARAMETERS 提供的数据,输出一定数量的字符到stderr。 * PARAMETERS 是一个指向 struct char_print_parms 的指针 */ void* char_print (vo...
原文 一、创建与销毁 1、线程创建 1.1 线程与进程 相对进程而言,线程是一个更加接近于执行体的概念,它可以与同进程中的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。在串行程序基础上引入线程和进程是为了提高程序的并发度,从而提高程序运行效率和响应时间。 线程和进程在使用上各有优缺点:线程执行开销小,但不利于资源的管理和保护;而进程正相反。同时,线程适合于在SMP机器上运行,而进程则可以跨机器...
pthread之线程取消 第二春刚来的时候,和我讨论过一个关于程序多线程的结构的问题,打算采用pthread_cancel来处理,为了满足下面的要求,于是有了下面的代码:) 前两天再和春讨论,我发现春懂的比我懂的多多了:( 线程取消并不常用,通常做为多线程编程中的高级话题,更为详细的描述请看多线程程序设计>>一书,此书是多线程编程的大宝典呀!对各对概念做了详细的描述。此外,环境高级编程>>涉及了大量posix中并未详述的...
pthread之线程堆栈 先来讲说线程内存相关的东西,主要有下面几条: 进程中的所有的线程共享相同的地址空间。任何声明为static/extern的变量或者堆变量可以被进程内所有的线程读写。一个线程真正拥有的唯一私有储存是处理器寄存器。线程栈可以通过暴露栈地址的方式与其它线程进行共享。 有大数据量处理的应用中,有时我们有必要在栈空间分配一个大的内存块或者要分配很多小的内存块,但是线程的栈空间的最大值在线程创建的时候...
创建线程之后调用pthread_detach(pid); 就吧线程设置程分离状态。 看网上的解释把线程设置程分离状态当线程结束后自动释放线程的资源,(也就是不用调用pthread_join()) 请问线程分离状态和不分离状态,都在什么时候用比较恰当(不知道设置分离状态有什么用)。