Linux下的pthread多线程编程

#include <pthread.h>

int pthread_create(pthread_t *restrict tidp,
                   const pthread_attr_t *restrict attr,
                   void *(*start_rtn)(void), 
                   void *restrict arg);

Returns: 0 if OK, error number on failure

第一个参数为指向线程标识符的指针。
第二个参数用来设置线程属性。
第三个参数是线程运行函数的起始地址。
最后一个参数是运行函数的参数。
#include <pthread.h>
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <sys/types.h>

#define ERROR -1
#define OK 0
 
/*************************
 *函数名:thread_function
 *描述:线程函数,打印
 *输入参数:无
 *输出参数:无
 *返回值:无
 * **********************/
void *thread_function(void *arg)
{	
	int i = 0;
	for ( i = 0; i < 20; i++)
	{
		printf("Thread says hi,%d!\n",i);
	}
}

int main(void)
{
	pthread_t mythread;
	if ( pthread_create(&mythread,NULL,thread_function,NULL) )
	{
		printf("Error creating thread\n");
		return ERROR;
	}
	
	/*等待另一个线程执行完毕*/
	if ( pthread_join(mythread,NULL))
	{
		printf("Error Joining thread");
		return ERROR;
	}
	printf("main over!\n");
	return OK;
}

gcc thread.c -o thead 编译一把:会报错,如下,

/tmp/ccIlZgdh.o: In function `main':
thread.c:(.text+0x65): undefined reference to `pthread_create'
thread.c:(.text+0x91): undefined reference to `pthread_join'
collect2: ld 返回 1

需要更改一下,因为pthread默认是不在Linux库中的。

gcc thread.c -o -lpthread thread

即可

相关推荐