要退出线程用哪个好呢? 我以前同事写了一个程序,退出线程用pthread_cancel(ThreadId, SIGKILL); 开始编译通过,运行的时候也没任何问题,我现在换了arm gcc编译器,编译说:'SIGKILL' undeclared 后来查了资料,才知道它们两个的原型:pthread_cancel(ThreadId); pthread_kill(ThreadId, SIGKILL); 那退出线程用哪个呢? 以前同事写的pthread_cancel(ThreadId, SIGKILL)为什么...
by herocsz - C/C++ - 2009-08-05 18:14:35 阅读(3156) 回复(1)
关于线程函数的问题?
#include
在SOLARIS C++4。2下在一个类的成员里调用了一个线程, int myClass::start() { ................ thr_id = pthread_create(&thread_id, NULL, thread_method, NULL); ........................ } 但必须把thread_method声明如下: void *thread_method(void *arg) 如果声明为void * myclass::thread_method(void *arg) 就编译不过,我想把它作为成员函数,怎么办???不然破坏封装性
今天发现win2000 + vmware + redhat9下,
pthread_setcancelstate(pthread_CANCEL_DISABLE,&nOldType);
没有起作用,也就是说就算设置了pthread_CANCEL_DISABLE,也会被pthread_cancel 函数cancel掉
测试程序如下
[code]
#include
[code]
#include
[code]
#include
pthread_create (&tid, NULL, mythread, NULL); 如果 mythread是Myclass的成员函数, void* Myclass::mythread(void *) 就会出现( void*)(*)不能overloaded等错误 如果就是普通的函数, 不是类里面的, 就没关西 大侠们说, 该怎么用类里面的函数作线程?
pthread_create (&tid, NULL, mythread, NULL); 如果 mythread是Myclass的成员函数, void* Myclass::mythread(void *) 就会出现( void*)(*)不能overloaded等错误 如果就是普通的函数, 不是类里面的, 就没关西 大侠们说, 该怎么用类里面的函数作线程?
我在A线程中调用pthread_cancel函数来终止B线程,它们不是同一类线程,但在同一个进程中。终止没有达到要求的效果? 运行环境为HP UNix ,B线程没有设置取消属性,用系统默认值。 程序运行时用glance可以观察到,调用pthread_cancel函数前,程序有60个线程,希望调用10次pthread_cancel函数终止10个线程(每次终止不同的线程号),每次调用返回均为0,但是调用后由glance观测到程序还有59个线程,只终止了一个? 为什么那? 请大...
在一个线程函数里面直接return NULL和用pthread_exit(0)有什么不同? void * thread(void *arg) { 直接return NULL和用pthread_exit(0)有什么不同? }