|
我写了一个很简单的测试线程工作的程序如下:
- int
- main()
- {
- pthread_t tid;
- int err;
- err = pthread_create(&tid, NULL, thread1, NULL);
- if (err < 0) {
- printf("thread create error\n");
- return -1;
- }
- return 0;
- }
- void *
- thread1()
- {
- printf("thread 1 started\n");
- }
复制代码
但是就是这个小程序出了很多让人不解的问题:
1.pthread_t tid必须初始化,不然工作不了
2.thread1()必须定义成void形式,然后在create的时候显示转换为(void*(*)(void *))类 型,不然编译报错
3.即使上面两步都做好了,程序执行时会马上返回,没有任何信息,将线程设置为detach也不行,必须join才行
为什么会出现这些情况啊,以前都没有碰见过,百思不得其解,希望各位帮帮忙,给我讲讲到底怎么回事。
p.s. 系统SUSE gcc 4.1这是公司系统
在家自己用slackware 12 gcc也是4.1没有上面的问题。
难道是发行版的问题吗??? |
|