- 论坛徽章:
- 0
|
发现了一个奇怪的问题,代码如下- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <pthread.h>
-
- int main()
- {
- int err;
- pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
-
- // 第一次加锁
- err = pthread_mutex_lock(&mutex);
- if (err != 0) {
- fprintf(stderr, "first lock: %s", strerror(err));
- exit(1);
- }
-
- // 第二次加锁
- err = pthread_mutex_lock(&mutex);
- if (err != 0) {
- fprintf(stderr, "second lock: %s", strerror(err));
- exit(1);
- }
-
- printf("never reach here\n");
-
- pthread_mutex_unlock(&mutex);
-
- return 0;
- }
复制代码 如果我用命令 gcc -o test test.c编译,也就是不加上-lpthread选项,能够编译通过,并且运行时打印出“never reach here”然后退出。如果加上-lpthread选项编译,运行时就会死锁。
请问大家这是为什么呢,我不链接到pthread库,难道还有其他库可以提供互斥锁API的二进制代码?调用线程的互斥锁API可以不加-lpthread选项? |
|