当前位置: 技术问答>linux和unix
很奇怪的Linux线程问题
来源: 互联网 发布时间:2015-07-20
本文导语: 小弟初学Linux线程,用了一个很简单的程序测试(就是最基本的创建线程),线程函数中是一个死循环,但是每次都只运行几次到几十次就自动退出线程了,请问这是什么原因啊? | 要有pthread...
小弟初学Linux线程,用了一个很简单的程序测试(就是最基本的创建线程),线程函数中是一个死循环,但是每次都只运行几次到几十次就自动退出线程了,请问这是什么原因啊?
|
要有pthread_join函数。
如下:
void *thread_function(void *argv)
{
while(1)
{
printf("hello worldn");
}
}
main()
{
pthread_t pthread;
pthread_create(&pthread, NULL, thread_function, NULL);
void *thread_result;
pthread_join(pthread, &thread_result);
}
如下:
void *thread_function(void *argv)
{
while(1)
{
printf("hello worldn");
}
}
main()
{
pthread_t pthread;
pthread_create(&pthread, NULL, thread_function, NULL);
void *thread_result;
pthread_join(pthread, &thread_result);
}
|
最好在while循环里sleep一下
|
是啊,如果while里不sleep,你的cpu肯定 100%,尤其你还有输出
|
呵呵,这里最好要有出错检查
pthread_create(&pthread, NULL, thread_function, NULL);
还有那个程序只能用 + 等方法停止了
pthread_create(&pthread, NULL, thread_function, NULL);
还有那个程序只能用 + 等方法停止了
|
线程被取消了吗?
|
用调试器运行,看是否被信号中断了的
|
void *thread_function(void *argv)
{
while(1)
{
printf("hello worldn");
}
}
main()
{
pthread_t pthread;
pthread_create(&pthread, NULL, thread_function, NULL);
while(1);
}
把代码贴出来吧,我用以上代码也没有出现过问题!
{
while(1)
{
printf("hello worldn");
}
}
main()
{
pthread_t pthread;
pthread_create(&pthread, NULL, thread_function, NULL);
while(1);
}
把代码贴出来吧,我用以上代码也没有出现过问题!
|
pthread_cancel(thread)来取消线程
我不知道别人的加不加sleep,反正如果我的不加的话 CPU 100%
可以用usleep(1)一微秒的,sleep是秒级的,太长了
我不知道别人的加不加sleep,反正如果我的不加的话 CPU 100%
可以用usleep(1)一微秒的,sleep是秒级的,太长了
|
把代码贴出来看看吧!
|
线程怎么被取消?
像这种while是都需要sleep一会吗?
像这种while是都需要sleep一会吗?
|
我把你的程序编译执行了,没有问题呀