Chinaunix

标题: pthread 怪问题!!! [打印本页]

作者: rlingxing    时间: 2010-11-12 15:14
标题: pthread 怪问题!!!
本帖最后由 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 )    // 这是一个线程安全的。 我不想破坏,在里面用全局数据。
请求高人指点。
作者: rlingxing    时间: 2010-11-12 15:40
回复 1# rlingxing
问题我已经解决了,可是还是不明白,为什么线程传参不过去! 请大家多多帮忙想想, 有知道的请告诉我,谢谢!
作者: samlumengjun    时间: 2010-11-12 15:56
你要保证cmd_buf 在创建线程之后没有被改变.
作者: rlingxing    时间: 2010-11-12 17:18
回复 3# samlumengjun


    嗯! 谢谢你的提醒,这个有注意到!




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2