您的位置:首页 > 其它

pthread_join等待的个数,即停止4个线程便释放一块空间,所以pthread_join时需加锁,之后便需对线程句柄置空

2015-04-15 15:07 501 查看
// glibc源码指出

// __builtin_expect (result->stackblock_size > 4 * size, 0) ;// allocatestack.c:209显示

// 以下代码,当为4个线程时没有问题,当有5个线程时,报段错误

#include <stdio.h>

#include <pthread.h>

#define MAX_THREADNUMBER 4 // 5

static void *func(void *arg)

{

int flag = *(int*)arg;

while( *(int*)arg == 0 )

{

int i = 0;

}

return NULL;

}

int main()

{

int flag = 0;

int i = 0;

pthread_t threads[MAX_THREADNUMBER] = {0};

for ( i = 0; i < MAX_THREADNUMBER; i++ )

{

pthread_create( &(threads[i]), 0, func, &flag );

}

sleep( 3 );

flag = 1;

for ( i = 0; i < MAX_THREADNUMBER; i++ )

{

pthread_join( threads[i], 0 );

}

sleep( 3 );

for ( i = 0; i < MAX_THREADNUMBER; i++ )

{

pthread_join( threads[i], 0 );

}

sleep( 3 );

for ( i = 0; i < MAX_THREADNUMBER; i++ )

{

pthread_join( threads[i], 0 );

}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐