多线程的问题-----在SunOS下创建失败???

jearry_zhou2 2002-06-21 05:57:18
我想测试多线程访问共享数据的情况,源程序如下:

#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>

static int iCount;
int main(int argc, char **argv)
{
int i;
int rp;
void *printInfo(void *arg);
pthread_t tid[5];
printf("Start...\n");
/*printf("EAGAIN:%d\n", EAGAIN);*/
for (i=0; i<5; i++){
rp = pthread_create(&tid[i], NULL, printInfo, NULL);
if (!rp)
printf("thread %d is created.\n", i+1);
else
printf("thread %d create faild! faild id %d\n", i+1, rp);
}
for (i=0; i<5; i++){
if (!pthread_join(tid[i], NULL))
printf("waiting for thread %d finished successed.\n", i);
}
exit(0);
}

void *printInfo(void *arg)
{
int j;
if (!pthread_detach(pthread_self()))
printf("thread %d detach sucessed.", pthread_self());
for (j=0; j<10; j++)
fprintf(stdout, "thread id: %d, count:%d\n", pthread_self(),iCount++);
return NULL;
}

编译运行结果:
Start...
thread 1 create faild! faild id -1
thread 2 create faild! faild id -1
thread 3 create faild! faild id -1
thread 4 create faild! faild id -1
thread 5 create faild! faild id -1
waiting for thread 0 finished successed.
waiting for thread 1 finished successed.
waiting for thread 2 finished successed.
waiting for thread 3 finished successed.
waiting for thread 4 finished successed.

那位仁兄能帮我解除疑惑,一定重谢!
...全文
29 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuying 2002-06-22
  • 打赏
  • 举报
回复
不加也可以编译通过,但运行失败。加上就可以了。
xuying 2002-06-22
  • 打赏
  • 举报
回复
不加也可以编译通过,但运行失败。加上就可以了。
OUJUNJIEILOVEYOU 2002-06-22
  • 打赏
  • 举报
回复
up厉害
ajiefudan 2002-06-22
  • 打赏
  • 举报
回复
不加能编译通过?
而且只用了pthread函数,没有用thr函数,需要lthread吗?
xuying 2002-06-21
  • 打赏
  • 举报
回复
编译时加上 -lthread -lpthread选项:

gcc -o test test.c -lthread -lpthread

4,356

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧