Chinaunix

标题: 请教linux下多线程编程问题! [打印本页]

作者: eNsEmpire    时间: 2008-09-20 10:12
标题: 请教linux下多线程编程问题!
我先说明下我的情况:
example.c中有main函数,

pthread_mutex_t mymutex;//全局

main()
{
  …… ……
  pthread_mutex_init( &mymutex,  NULL );
  pthread_create( &id, NULL, my_net_transfer, NULL );
  pthread_mutex_lock( &mymutex );

  …… ……

  pthread_mutex_unlock( &mymutex );
}

net.cpp中有my_net_transfer函数,
void my_net_transfer( void )
{
  pthread_mutex_lock( &mymutex );
  
  …… ……

  pthread_mutex_unlock( &mymutex );
}

请问我这样写法有问题吗?

现在是进入my_net_transfer线程后老是会跑飞。
作者: ytl    时间: 2008-09-20 10:33
main()
{
  …… ……
  pthread_mutex_init( &mymutex,  NULL );
  pthread_mutex_lock( &mymutex );
  pthread_create( &id, NULL, my_net_transfer, NULL );

  …… ……

  pthread_mutex_unlock( &mymutex );
}
作者: eNsEmpire    时间: 2008-09-20 11:25
这样在main中pthread_create是子线程吗?

如果main中pthread_mutex_unlock后直接return 0,那么子线程还会被终止运行而直接退出吗?
作者: chenzhanyiczy    时间: 2008-09-20 14:56
是;
直接退出
作者: scut_tang    时间: 2008-09-20 17:11
在main里加个pthread_join么。
作者: eNsEmpire    时间: 2008-09-24 09:34
那我是如何保证等子线程完全运行完后,父线程才退出呢?
作者: 5毛党党员    时间: 2008-09-24 09:36
原帖由 eNsEmpire 于 2008-9-24 09:34 发表
那我是如何保证等子线程完全运行完后,父线程才退出呢?

在主线程推出前 用pthread_join 等待子线程结束
作者: eNsEmpire    时间: 2008-09-25 11:28
谢谢兄台~~~




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