LInux下Posix的传统线程示例

简介: LInux下Posix的传统线程示例

简介


Linux线程是需要连接pthreat库,线程的使用比进程更灵活,需要注意的是线程间的互斥,或者说是资源共享问题。


C++11之后,C++标准库也引入了线程,并且使用非常方便,以后再介绍,这里先发一个简单的线程示例代码。


代码

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


char message[32]={"Hello world!"};
void *thread_function(void *arg);


void *thread_function(void *arg)
{
    printf("thread_fonction is runing , argument is %s\n", (char *)arg);
    strcpy(message, "marked by thread");

    printf("thread_function finished\n");
    pthread_exit("Thank you for the cpu time\n"); 
}


int
main(int argc, char **argv)
{   
    pthread_t a_thread;
    void *thread_result;

    if(pthread_create(&a_thread, NULL, thread_function, (void*)message ) < 0)
  {
    perror("pthread_create error:");
    exit(-1);
  }
  
    printf("writing for the thread to finish\n");
    if(pthread_join(a_thread, &thread_result) < 0)
    {
        perror("pthread_join error:");
        exit(0);
    }

    printf("in main, thread is exist, marked msg: %s \n", message);

    exit(0);
}


编译


编译的时候,需要加上pthread线程库

gcc pthreat.c -o test -lpthread


运行


程序启动后,主程序中,创建线程,然后等待线程退出,在线程函数里,会把message字符串修改掉。

./test 
in main, writing for the thread to finish
in thread, thread_fonction is runing , argument is Hello world!
in thread, thread_function finished
in main, thread is exist, marked msg: marked by thread 
目录
相关文章
|
15天前
|
JavaScript Linux
【详细讲解】Linux grep命令用法大全 片尾有示例搜索指定目录中指定文件后缀的指定字符
【详细讲解】Linux grep命令用法大全 片尾有示例搜索指定目录中指定文件后缀的指定字符
32 1
|
4天前
|
网络协议 安全 Python
我们将使用Python的内置库`http.server`来创建一个简单的Web服务器。虽然这个示例相对简单,但我们可以围绕它展开许多讨论,包括HTTP协议、网络编程、异常处理、多线程等。
我们将使用Python的内置库`http.server`来创建一个简单的Web服务器。虽然这个示例相对简单,但我们可以围绕它展开许多讨论,包括HTTP协议、网络编程、异常处理、多线程等。
8 0
|
5天前
|
安全 算法 Linux
【Linux】线程安全——补充|互斥、锁|同步、条件变量(下)
【Linux】线程安全——补充|互斥、锁|同步、条件变量(下)
14 0
|
5天前
|
存储 安全 Linux
【Linux】线程安全——补充|互斥、锁|同步、条件变量(上)
【Linux】线程安全——补充|互斥、锁|同步、条件变量(上)
10 0
|
5天前
|
缓存 Linux 编译器
【Linux】多线程——线程概念|进程VS线程|线程控制(下)
【Linux】多线程——线程概念|进程VS线程|线程控制(下)
15 0
|
5天前
|
存储 Linux 调度
【Linux】多线程——线程概念|进程VS线程|线程控制(上)
【Linux】多线程——线程概念|进程VS线程|线程控制(上)
16 0
|
19天前
|
存储 Java
Java线程池参数详解及其示例
Java线程池参数详解及其示例
15 0
|
20天前
|
Java Linux 网络安全
Linux常用50个命令分享:功能、示例与实用技巧
Linux常用50个命令分享:功能、示例与实用技巧
|
21天前
|
安全 Linux 数据安全/隐私保护
【linux】线程同步和生产消费者模型
【linux】线程同步和生产消费者模型
13 0
|
Linux
Linux IPC实践(10) --Posix共享内存
1. 创建/获取一个共享内存 #include #include /* For mode constants */ #include /* For O...
873 0