当前位置: 技术问答>linux和unix
请教大虾一个多线程的问题?比较苦恼!到底怎么了?
来源: 互联网 发布时间:2016-02-16
本文导语: 小的以前也做过linux下的一些基本的多线程代码,感觉如果不加互斥等等手段解决同步问题,子线程之间的运行应该是cpu自动分配时间片,交错进行的,但是最近我写了一段代码却发现,两个子线程并非交错运行...
小的以前也做过linux下的一些基本的多线程代码,感觉如果不加互斥等等手段解决同步问题,子线程之间的运行应该是cpu自动分配时间片,交错进行的,但是最近我写了一段代码却发现,两个子线程并非交错运行的,而是一个第一运行起来的线程独占cpu运行结束之后,第二个线程才开始运行直到结束,所以想请教大家,这段代码到底出了什么问题也???
代码如下:
#include
#include
#include
#include
void thread_function1();
void thread_function2();
int i = 1; //一个全局变量,对此访问不加互斥
int main()
{
int res;
pthread_t a_thread;
pthread_t b_thread;
res = pthread_create(&a_thread, NULL, (void *)thread_function1, NULL);
if (res)
{
perror("Thread1 creation failed");
exit(EXIT_FAILURE);
}
res = pthread_create(&b_thread, NULL, (void *)thread_function2, NULL);
if (res)
{
perror("Thread2 creation failed");
exit(EXIT_FAILURE);
}
pthread_join(b_thread, NULL);
pthread_join(a_thread, NULL);
exit(0);
}
void thread_function1()
{
while(i
代码如下:
#include
#include
#include
#include
void thread_function1();
void thread_function2();
int i = 1; //一个全局变量,对此访问不加互斥
int main()
{
int res;
pthread_t a_thread;
pthread_t b_thread;
res = pthread_create(&a_thread, NULL, (void *)thread_function1, NULL);
if (res)
{
perror("Thread1 creation failed");
exit(EXIT_FAILURE);
}
res = pthread_create(&b_thread, NULL, (void *)thread_function2, NULL);
if (res)
{
perror("Thread2 creation failed");
exit(EXIT_FAILURE);
}
pthread_join(b_thread, NULL);
pthread_join(a_thread, NULL);
exit(0);
}
void thread_function1()
{
while(i