『壹』 linux下C/C++如何实现非阻塞等待子线程结束
主线程可以使用一个数组存储子线程的ID,不调用 pthread_join来等候子线程退出,要是版子线程退出后权还有工作要清理,可以使用 pthread_cancel_push函数来注册退出控制流时调用的函数
『贰』 Linux线程的几种结束方式
Linux线程的几种结束方式
Linux创建线程使用
int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
void *(*start_routine)(void *), void *arg)
1
2
Linux线程的几种结束方式:
调用pthread_exit(exit_code),exit_code为线程退回出的状态代码。同一进程下答的其他线程可以通过pthread_join(exit_code)来使用。
函数start_routine使用return返回,与调用pthread_exit()作用相同。
线程被取消pthread_cancel()。
同一进程中的其他线程调用了exit(),,或者主线程从main函数返回。
『叁』 如何在linux下用c++强制结束一个线程
不要用线程死循环啊,
用一个标志变量,退出时改变此变量的值,让线程退出。
while(!bFlag)
{}
『肆』 如何在linux下用c++强制结束一个线程呢
执行完成后隐式退出
由线程本身显示调用pthread_exit 函数退出;
pthread_exit (void * retval)
被其他线程用回pthread_cance函数终止:答
pthread_cance (pthread_t thread)
解决办法:
// 创建线程前设置 PTHREAD_CREATE_DETACHED 属性
pthread_attr_t attr;
pthread_t thread;
pthread_attr_init (&attr);
pthread_attr_setdetachstat(&attr, PTHREAD_CREATE_DETACHED);
pthread_create (&thread, &attr, &thread_function, NULL);
pthread_attr_destroy (&attr);
当线程为joinable时,使用pthread_join来获取线程返回值,并释放资源。
当线程为joinable时,也可在线程中调用 pthread_detach(pthread_self());
『伍』 linux如何杀掉线程
我们使用linux时遇到端口占用,在了解占用程序影响不大的情况下,会通过netstat命令找到占用端口的进程,直接kill掉
查找端口占用命令:
netstat -tnlp | grep 80
可以看到,进程id为20902的进程占用了80端口
我们可以选择使用命令 kill pid 杀掉进程
kill 20902
或者使用kill -9 pid 强杀进程
kill -9 20902
如果你需要杀掉所有筛选结果下的进程可以使用
ps -aux|grep name|awk '{print $2}'|xargs kill -9
其中name是你要查询的服务名称,例如我要查nginx的所有服务可以使用
ps -aux|grep nginx
我们要筛选出第二项pid
ps -aux|grep name|awk '{print $2}'
筛选出后要杀掉这些进程
ps -aux|grep name|awk '{print $2}'|xargs kill -9
这样就批量杀掉筛选出的所有进程了