Linux之线程入门示例

简介

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 
微信公众号

个人微信公众号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值