Chinaunix首页 | 论坛 | 博客
  • 博客访问: 12876584
  • 博文数量: 1293
  • 博客积分: 13501
  • 博客等级: 上将
  • 技术积分: 17974
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-08 18:11
文章分类

全部博文(1293)

文章存档

2019年(1)

2018年(1)

2016年(118)

2015年(257)

2014年(128)

2013年(222)

2012年(229)

2011年(337)

分类: IT业界

2011-06-17 08:43:46

  1. /* Name thread_create.c
  2.  * Author dyli
  3.  * date 20110615
  4.  * Description 处理getpid()、pthread_self()、pthread_create()函数,
  5.  *                并进行讨论主子线程的问题
  6.  * */


  7. /***pthread_cancel()函数************************************************
  8. *    函数功能:    可以(在其它线程中)结束一个线程
  9. *    函数原型:
  10. *    返回值 :    返回值为0时,创建成功!!
  11. *                
  12. *    所需库 :    
  13. * 备注 :    
  14. ****************************************************************/

  15. #include <pthread.h>
  16. #include <stdio.h>
  17. #include <stdlib.h>

  18. int i=0;

  19. void *thread_func(void *argc)
  20. {
  21.     int *val=argc;
  22.     printf("Hi,man! I'm a son Thread\n\n");
  23.     if(argc!=NULL)
  24.     {
  25.         //for(int i=0;i<1000;i++)
  26.         //c99不允许在for循环里初始化,会弹出在 C99 模式之外使用‘for’循环初始化声明错误
  27.         
  28.         for(;i<50;i++)
  29.         {
  30.             ++i; //这两个不经意的++,产生了50内顺序显示奇数的效果
  31.             printf("Now Show you the message:%d\n",*val);
  32.             printf("Thread run %d times",i);
  33.         }
  34.     }
  35. }

  36. int main()
  37. {
  38.     pthread_t tid;
  39.     int t_arg =10;
  40.     int err;
  41.     err=pthread_create(&tid,NULL,thread_func,&t_arg); //--->带参数的pthread_create()函数
  42.     if(err)//返回值为0时,创建成功!!
  43.     {     
  44.         printf("create thread error!!\n");    
  45.     }
  46.     
  47.     sleep(1);
  48.     printf("run in main Thread\n");
  49.     if(pthread_cancel(tid))//---------------------------->func1结束线程
  50.     {
  51.         printf("向id为tid的线程发送了取消执行,但并不表示该线程会停止执行\n");
  52.     }
  53.     return 0;
  54. }
  1. [root@localhost thread_cancel]# ./thread_cancel
    Hi,man! I'm a son Thread
  2. Now Show you the message:10
    Thread run 1 timesNow Show you the message:10
    Thread run 3 timesNow Show you the message:10
    Thread run 5 timesNow Show you the message:10
    Thread run 7 timesNow Show you the message:10
    Thread run 9 timesNow Show you the message:10
    Thread run 11 timesNow Show you the message:10
    Thread run 13 timesNow Show you the message:10
    Thread run 15 timesNow Show you the message:10
    Thread run 17 timesNow Show you the message:10
    Thread run 19 timesNow Show you the message:10
    Thread run 21 timesNow Show you the message:10
    Thread run 23 timesNow Show you the message:10
    Thread run 25 timesNow Show you the message:10
    Thread run 27 timesNow Show you the message:10
    Thread run 29 timesNow Show you the message:10
    Thread run 31 timesNow Show you the message:10
    Thread run 33 timesNow Show you the message:10
    Thread run 35 timesNow Show you the message:10
    Thread run 37 timesNow Show you the message:10
    Thread run 39 timesNow Show you the message:10
    Thread run 41 timesNow Show you the message:10
    Thread run 43 timesNow Show you the message:10
    Thread run 45 timesNow Show you the message:10
    Thread run 47 timesNow Show you the message:10
    Thread run 49 timesrun in main Thread
    向id为tid的线程发送了取消执行,但并不表示该线程会停止执行
    [root@localhost thread_cancel]#

 

 

  1. if(argc!=NULL)
  2.     {
  3.          for(int i=0;i<1000;i++)
  4.         //c99不允许在for循环里初始化,会弹出在 C99 模式之外使用‘for’循环初始化声明错误        
  5.         //for(;i<50;i++)
  6.         {
  7.             ++i; //这两个不经意的++,产生了50内顺序显示奇数的效果
  8.             printf("Now Show you the message:%d\n",*val);
  9.             printf("Thread run %d times",i);
  10.         }
  11.     }

 

 

  1. [root@localhost thread_cancel]# make
  2. cc -c -o thread_cancel.o thread_cancel.c
  3. thread_cancel.c: 在函数‘thread_func’中:
  4. thread_cancel.c:30: 错误:在 C99 模式之外使用‘for’循环初始化声明
  5. make: *** [thread_cancel.o] 错误 1
阅读(2370) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~