2009-05-13 00:28下午实验编写了使用pthread_kill函数检测一个线程是否还活着的程序,在linux环境下gcc编译通过,现将代码贴在下面:
/******************************* pthread_kill.c *******************************/
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <errno.h>
void *func1()/*1秒钟之后退出*/
{
sleep(1);
printf("线程1(ID:0x%x)退出。\n",(unsigned int)pthread_self());
pthread_exit((void *)0);
}
void *func2()/*5秒钟之后退出*/
{
sleep(5);
printf("线程2(ID:0x%x)退出。\n",(unsigned int)pthread_self());
pthread_exit((void *)0);
}
void test_pthread(pthread_t tid) /*pthread_kill的返回值:成功(0) 线程不存在(ESRCH) 信号不合法(EINVAL)*/
{
int pthread_kill_err;
pthread_kill_err = pthread_kill(tid,0);
if(pthread_kill_err == ESRCH)
printf("ID为0x%x的线程不存在或者已经退出。\n",(unsigned int)tid);
else if(pthread_kill_err == EINVAL)
printf("发送信号非法。\n");
else
printf("ID为0x%x的线程目前仍然存活。\n",(unsigned int)tid);
}
int main()
{
int ret;
pthread_t tid1,tid2;
pthread_create(&tid1,NULL,func1,NULL);
pthread_create(&tid2,NULL,func2,NULL);
sleep(3);/*创建两个进程3秒钟之后,分别测试一下它们是否还活着*/
test_pthread(tid1);/*测试ID为tid1的线程是否存在*/
test_pthread(tid2);/*测试ID为tid2的线程是否存在*/
exit(0);
}
编译:gcc -o pthread_kill -lpthread pthread_kill.c
运行:./pthread_kill
///////////////////////// 运行结果 /////////////////////////////
线程1(ID:0xb7e95b90)退出。
ID为0xb7e95b90的线程不存在或者已经退出。
ID为0xb7694b90的线程目前仍然存活。
分享到:
相关推荐
`pthread_kill`是POSIX线程(pthread)库中一个关键的函数,它允许程序员向指定线程发送信号,以此来控制线程的行为。在这个"test_pthread_kill测试程序"中,我们将深入探讨`pthread_kill`的用法、工作原理以及如何...
pthread_testcancel pthread_kill pthread_cancel 的使用例子
`pthread_cond_wait()` 是 POSIX 线程库中的一个关键函数,用于线程同步。它与互斥锁(mutex)一起工作,允许线程在特定条件满足时挂起执行,等待其他线程发出信号。在深入分析 `pthread_cond_wait()` 的用法之前,...
在Linux多线程编程中,`pthread_cond_wait()`是一个关键的同步原语,它用于线程间的通信和协作。在使用`pthread_cond_wait()`时,通常会在调用它之前加入一个while循环来判断条件是否满足。这个做法是为了避免虚假...
在ARM Linux中,使用`pthread_create()`函数可以创建新的线程。该函数需要提供线程函数的指针,以及传递给线程函数的参数。例如: ```c pthread_t thread_id; int ret = pthread_create(&thread_id, NULL, thread_...
Linux 多线程编程是指在 Linux 操作系统中使用多线程技术来提高程序的执行效率和响应速度。多线程编程可以让程序同时执行多个任务,从而提高程序的整体性能。 线程基础知识 什么是线程?线程(Thread)是操作系统...
总结,`pthread_cond_wait`是多线程编程中实现线程同步的重要工具,正确理解和使用它能够帮助我们编写出高效、可靠的多线程程序。然而,由于其涉及到复杂的线程交互,因此在使用时需要特别注意避免死锁和无效等待,...
4. **条件变量**:在使用 `pthread_cond_wait` 和 `pthread_cond_signal` 等条件变量函数时,也需要用到 `pthread_self` 来确定发送信号或等待的线程。 5. **线程退出**:有时,你需要知道哪个线程正在执行特定的...
本手册将详细讲解每个线程函数的使用方法、参数设置、返回值等信息,从而帮助开发者更好地掌握 LINUX 线程编程技术。 一、线程创建 线程创建是 LINUX 线程编程的基础,pthread_create 函数是创建线程的主要函数。...
在 Linux 系统下,创建线程可以使用 pthread_create 函数,该函数的原型为: ```c int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void*), void *arg); ``` 其中,...
pthread-win32是pthread库的一个移植版本,它为Windows操作系统提供了与Posix线程兼容的API,使得C和C++开发者能够在Windows上使用pthread相关的函数,如`pthread_create`、`pthread_join`、`pthread_mutex_lock`等...
`pthread_once` 是一个在 POSIX 标准中定义的函数,用于实现线程安全的初始化。在这个场景下,我们将深入探讨如何使用 `pthread_once` 在 C/C++ 中实现单例模式,并结合 `Win32` 平台的特性进行讨论。 首先,单例...
在 Linux 下编写多线程程序时,需要使用 pthread_create 函数来创建一个线程,pthread_join 函数来等待一个线程的结束。pthread_create 函数的原型为:extern int pthread_create __P ((pthread_t *__thread, __...
根据给定文件的信息,本文将深入探讨Linux下pthread库中几个关键函数的使用方法,并针对“段错误”这一常见问题进行分析与对策建议。 ### 1. pthread_create #### 函数原型 ```c int pthread_create(pthread_t *...
本文将深入探讨`pthread_mutex`在Linux环境下的使用,以及它在多线程同步中的作用。 首先,让我们理解什么是互斥。在多线程环境中,互斥是指同一时间只有一个线程能访问特定的资源或代码段,以防止数据竞争和其他...
线程中处理信号pthread_sigmask 的使用
Linux下的多线程编程是操作系统课程中的重要组成部分,它涉及到如何在Linux环境下创建、管理和同步多个执行线程,以提高程序的并发性和效率。本文将深入探讨Linux多线程的概念、实现方法以及相关的同步机制。 一、...
在C语言中,可以使用`pthread_create()`函数创建线程。该函数接受一个`pthread_t`类型的指针,用于返回新创建线程的ID,以及一个线程入口函数和其参数。 ```c #include <pthread.h> int pthread_create(pthread_t...