当前位置:  技术问答>linux和unix

pthread多线程问题

    来源: 互联网  发布时间:2016-12-22

    本文导语:  主线程里创建2个线程,pthread_t tid1,tid2;  2个线程均是while(1),且都是用默认初始化 两个线程同步运行,主线程运行一段时间后要将tid1和tid2结束,且tid2比tid1延迟10s结束,怎么实现?? pthread_kill(tid1, SIGSTOP); //SIGKI...

主线程里创建2个线程,pthread_t tid1,tid2;  2个线程均是while(1),且都是用默认初始化

两个线程同步运行,主线程运行一段时间后要将tid1和tid2结束,且tid2比tid1延迟10s结束,怎么实现??

pthread_kill(tid1, SIGSTOP); //SIGKILL或者pthread_cancel(tid1)都不行啊
sleep(10);
pthread_kill(tid2, SIGSTOP);

以上代码执行不能达到预期,求高手指点。。。

|

#include 
#include 
#include 
#include 
using namespace std;

pthread_t thread1,thread2;

void * th1_fun(void *);
void * th2_fun(void *);
void sig_alarm(int signo);
bool kill_thread2=false;


int main()
{
   //开启两个线程
  pthread_create(&thread1,NULL,th1_fun,NULL);
  pthread_create(&thread2,NULL,th2_fun,NULL);
  sleep(5);//使两个线程有机会运行起来
  //do something here
     pthread_cancel(thread1);//向1号线程发送取消信号,要求1号线程终止
  signal(SIGALRM,sig_alarm);
   alarm(10);//10s后由信号处理程序终止2号线程

  for(; ;)
  ;
  return 0;
}


void * th1_fun(void *)
{
  pthread_detach(pthread_self());//分离自己,不需要主线程等待
   pthread_setcancelstate(PTHREAD_CANCEL_ENABLE,NULL);//允许线程取消,其实新建线程默认就是这个属性。
  pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS,NULL);//收到取消信号后,立即终止自己。

     while(1)
     {
       cout

    
 
 

您可能感兴趣的文章:

  • 先pthread_cancel()再pthread_join(),主线程退出?
  • 大家好,pthread库创建线程,如何等待线程安全退出?
  • 一个线程能用pthread_kill(pid,SIGHUP)将另一个线程挂起么?
  • 问一个关于pthread线程删除(取消)的问题
  • 跪求:linux下pthread 双线程计算和单线程的运行时间完全相同是为什么?
  • 请问pthread_mutex_lock()和pthread_mutex_unlock()可不可以用于对不同进程的线程进行同步。
  • Unix中PThread是干什么用的,创建线程吗---小妹
  • 请教:pthread_join( )在等待一个已经退出的线程时为何会导致死锁?
  • 请教一个pthread线程库的使用的问题
  • 问个pthread线程库的问题
  • pthread线程问题
  • 求教,关于pthread_join 以及线程之间关系的问题
  • 用pthread_create建立线程后如何让线程运行的函数在create完了之后才实际运行 相当与windows下的CREATE_SUSPENDED ??
  • 求助!pthread与Win32 API线程库的对应问题
  • 关于线程pthread.h
  • 能不能查看获取pthread_mutex_t的线程id?
  • 请教sleep和pthread_delay_np:阻塞线程/阻塞进程?
  • pthread_cond_timedwait用来让线程睡眠无效?
  • Linux的线程库pthread是否有"亲缘性"的概念?
  • linux下进程和线程的区别(fork(),pthread_create())?
  • linux下运行pthread库出错的问题
  • pthread 阻塞问题
  • 关于pthread_cancel()之后的内存问题
  • 关于pthread_create函数的问题
  • pthread_create的问题
  • 关于pthread_cond_wait的几个问题
  • 线程锁函数pthread_cleanup_push()编译问题,急!
  • pthread共享模式链接时是不是有问题啊?
  • pthread_cleanup_push的小问题?
  • 关于pthread_mutex_lock的问题,请教各位
  • 初始化pthread_mutex_t变量的问题?????
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • unix/Linux下c/c++ pthread库读写锁函数介绍
  • pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);和pthread_detach(pthread_self()); 有区别吗。怎么我执行的效果不一样
  • pthread_attr_init()及pthread_cond_wait使用疑惑
  • pthread_cond_signal和pthread_cond_wait两个函数是怎么意思?
  • 包含了#include <pthread.h>,为什么还有pthread_create错误?
  • 请问一下红色字体处的区别,及pthread_self()和pthread_creat()函数第一个参数的区别?
  • pthread_cond_wait 之前的 pthread_mutex_lock 语句 有什么作用,可以不用吗?
  • pthread_cancel和pthread_cond_wait
  • pthread_cond_t和pthread_mutex_t的疑问?
  • pthread_cond_t进入等待状态,则pthread_mutex_t无效...
  • LINUX关于pthread_create 和pthread_join
  • Pthread
  • pthread_create成功返回,但pthread_kill(thrdid, 0)返回说进程不存在?
  • pthread_cond_timedwait用法
  • 为什么我在man中查不到有关pthread的帮助?
  • 一个pthread_create 编译出错,是什么原因啊
  • 关于man关于pthread
  • 在调用pthread_testcancel时要采用这样的方式???
  • pthread_mutex_destroy()调用失败的原因
  • linux 函数返回值很奇怪 pthread_getspecific(key)
  • pthread_join返回非0,但 perror 提示success


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3