免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1340 | 回复: 3

pthread 怪问题!!! [复制链接]

论坛徽章:
0
发表于 2010-11-12 15:14 |显示全部楼层
本帖最后由 rlingxing 于 2010-11-12 15:35 编辑

先看代码:
  
  ......
   pthread_t  power_id;
   pthread_attr_t power_attr;
   pthread_attr_init( &power_attr );
   pthread_attr_setdetachstate( &power_attr, PTHREAD_CREATE_DETACHED );
   
   printf ( "cmd_buf --> [ %s ] \n" , cmd_buf );   // (1)
   int ret = pthread_create( &power_id, &power_attr, (void *) power_thread, (void *)cmd_buf );
   if ( 0 != ret )
   {
         lprintf( Log,  error, "power thread create \n" );
         pthread_attr_destroy( &power_attr );
         return err_power;
   }
   .......
   
  void * power_thead ( void *arg )   
{
        printf( " enter arg --> [ %s ] \n", (char *) arg );  // (2)
         ....
         ....


}

(1), 有值: TEST@xxxxxxxxxx$poweron$08:00:00$poweroff$23:00:00@
(2), 这里打出来是空的。
也就是说没有传过来,这时为什么?  void * power_thead ( void *arg )    // 这是一个线程安全的。 我不想破坏,在里面用全局数据。
请求高人指点。

论坛徽章:
0
发表于 2010-11-12 15:40 |显示全部楼层
回复 1# rlingxing
问题我已经解决了,可是还是不明白,为什么线程传参不过去! 请大家多多帮忙想想, 有知道的请告诉我,谢谢!

论坛徽章:
0
发表于 2010-11-12 15:56 |显示全部楼层
你要保证cmd_buf 在创建线程之后没有被改变.

论坛徽章:
0
发表于 2010-11-12 17:18 |显示全部楼层
回复 3# samlumengjun


    嗯! 谢谢你的提醒,这个有注意到!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP