现在的位置: 首页 > 综合 > 正文

采用nptl库编译程序

2019年03月20日 ⁄ 综合 ⁄ 共 1008字 ⁄ 字号 评论关闭
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <pthread.h>

void *thread_function(void *arg);

char message[] = "Hello World";

int main() {
    int res;
    pthread_t a_thread;
    void *thread_result;
    res = pthread_create(&a_thread, NULL, thread_function, (void *)message);
    if (res != 0) {
        perror("Thread creation failed");
        exit(EXIT_FAILURE);
    }
    printf("Waiting for thread to finish...\n");
    res = pthread_join(a_thread, &thread_result);
    if (res != 0) {
        perror("Thread join failed");
        exit(EXIT_FAILURE);
    }
    printf("Thread joined, it returned %s\n", (char *)thread_result);
    printf("Message is now %s\n", message);
    exit(EXIT_SUCCESS);
}

void *thread_function(void *arg) {
    printf("thread_function is running. Argument was %s\n", (char *)arg);
    sleep(3);
    strcpy(message, "Bye!");
    pthread_exit("Thank you for the CPU time");
}

 

获取nptl版本

getconf GNU_LIBPTHREAD_VERSION

root@localhost:/home/ubuntu/chapter12# find / -name pthread.h
/usr/include/pthread.h

编译:

gcc -D_REENTRANT -I/usr/include/ thread1.c -o thread1 -L/usr/lib -lpthread

附:

Linux 线程模型的比较:LinuxThreads 和 NPTL

http://www.ibm.com/developerworks/cn/linux/l-threading.html

抱歉!评论已关闭.