Linux多线程工程化开发,简单程序示例

很多人写多线程开发的时候都是写在单个文件内,完全不适合作为一个工程的方法来进行开发。以下的程序示例是拆分成多个文件的做法,并写一个makefile管理。

文件清单:

/*main.c*/
#include <stdio.h>
#include <stdlib.h>
#include <pthread1.h>
#include <pthread2.h>
#include <pthread.h>

int main(int argc, char **argv)
{
	pthread_t id1, id2;
	printf("This is main...\n");
	if (pthread_create(&id1, NULL, (void*)pthread1, NULL))
	{
		printf("pthread_create pthread1 failed!\n");
		exit(1);
	}
	if (pthread_create(&id2, NULL, (void*)pthread2, NULL))
	{
		printf("pthread_create pthread2 failed!\n");
		exit(1);
	}
	pthread_join(id1, NULL);
	pthread_join(id2,NULL);	
	return 0;
}

/*pthread1.c*/
#include <pthread1.h>

void pthread1(void)
{
	while(1)
	{
		printf("This is pthread1...\n");
		usleep(10);
	}
	pthread_exit(0);
}

/*pthread2.c*/
#include <pthread2.h>

void pthread2(void)
{
	while(1)
	{
		printf("This is pthread2...\n");
		usleep(10);
	}
	pthread_exit(0);
}

/*pthread1.h*/
#ifndef _PTHREAD1_H
#define _PTHREAD1_H

#include <stdio.h>
void pthread1(void);

#endif

/*pthread2.h*/
#ifndef _PTHREAD2_H
#define _PTHREAD2_H

#include <stdio.h>
void pthread2(void);

#endif
#makefile
CFLAGS = -Wall -g -I../include
LIBS = -lpthread
CC = gcc
OBJECT_DIR = ../object/
TARGET = thread
OBJECT = $(OBJECT_DIR)main.o $(OBJECT_DIR)pthread1.o $(OBJECT_DIR)pthread2.o
DE_OBJECT = main.o pthread1.o pthread2.o

$(TARGET):$(DE_OBJECT)
		$(CC) $(CFLAGS) $(LIBS) -o $(OBJECT_DIR)$@ $(OBJECT)
%.o:%.c
		$(CC) -c $(CFLAGS) $(LIBS) $< -o $(OBJECT_DIR)$@
.PHONY:clean
clean:
		rm -f $(OBJECT_DIR)*.o $(OBJECT_DIR)$(TARGET)


 
在当前目录下新建一个目录include和object(用于存放目标文件),注意把头文件pthread1.h和pthread2.h放进去,然后在进行make,成功后会在object下生成可执行文件thread,执行就OK了。 



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值