当前位置: 技术问答>linux和unix
hp10平台下的多线程问题
来源: 互联网 发布时间:2015-12-12
本文导语: 我在hp 10.20的平台上使用pthread_create创建一个线程,参数使用默认值,如果线程不结束(使用死循环来做监视),直到整个程序结束都得不到新建线程中的信息,不知道谁知道原因及解决办法. | 有可能...
我在hp 10.20的平台上使用pthread_create创建一个线程,参数使用默认值,如果线程不结束(使用死循环来做监视),直到整个程序结束都得不到新建线程中的信息,不知道谁知道原因及解决办法.
|
有可能是子线程还没有来及打。
修改一下:
#include
void main()
{
int rtn;
struct timeval mto;
mto.tv_sec = 60;
mto.tv_usec = 0;
pthread_t pid;
pthread_create(&pid, 0, rt,0);
while (1)
{
rtn = select(0, 0, 0, 0, &mto);
if (rtn == 1)
if (errno == EINTR)
continue;
else
break;
}
printf("main program is finished.n");
}
修改一下:
#include
void main()
{
int rtn;
struct timeval mto;
mto.tv_sec = 60;
mto.tv_usec = 0;
pthread_t pid;
pthread_create(&pid, 0, rt,0);
while (1)
{
rtn = select(0, 0, 0, 0, &mto);
if (rtn == 1)
if (errno == EINTR)
continue;
else
break;
}
printf("main program is finished.n");
}
|
#include
#include
#include
#include
void*
rt(void* data)
{
struct timeval to;
while(1)
{
to.tv_sec = 20;
to.tv_usec = 0;
if (select(0, 0, 0, 0, &to) == 0)
printf("Thread is running.n");
}
return NULL;
}
void main()
{
struct timeval mto;
mto.tv_sec = 60;
mto.tv_usec = 0;
pthread_t pid;
pthread_create(&pid, 0, rt,0);
select(0, 0, 0, 0, &mto);
printf("main program is finished.n");
pthread_join(pid,NULL);//加上这条试一下..
}
应该是时间片的问题
#include
#include
#include
void*
rt(void* data)
{
struct timeval to;
while(1)
{
to.tv_sec = 20;
to.tv_usec = 0;
if (select(0, 0, 0, 0, &to) == 0)
printf("Thread is running.n");
}
return NULL;
}
void main()
{
struct timeval mto;
mto.tv_sec = 60;
mto.tv_usec = 0;
pthread_t pid;
pthread_create(&pid, 0, rt,0);
select(0, 0, 0, 0, &mto);
printf("main program is finished.n");
pthread_join(pid,NULL);//加上这条试一下..
}
应该是时间片的问题
|
你分别测试一下rt和main中的select的返回值嘛,如果都是0那就是系统问题了
|
up