c语言读取多个连续的文件,C语言---多个线程读取文件
发布日期:2021-06-24 15:52:06 浏览次数:4 分类:技术文章

本文共 1073 字,大约阅读时间需要 3 分钟。

#include

#include

#include

#include

#include

#include 

#define THREAD_NUM 25

typedef struct

{

FILE *_fp;

int _nThreadId;//第几个线程

sem_t *_semLock;

}IDD_THREAD_PARAM;

void *ThreadFunc(void *args)

{

char sLine[100+1];

FILE *fpRead = ((IDD_THREAD_PARAM *)args)->_fp;

sem_t *semLock = ((IDD_THREAD_PARAM *)args)->_semLock;

int nId = ((IDD_THREAD_PARAM *)args)->_nThreadId;

sem_wait(semLock);

while(!feof(fpRead))

{

memset(sLine,0,sizeof(sLine));

fgets(sLine,100,fpRead);

fprintf(stderr,"Thread ID-%d:%s",nId,sLine);

}

sem_post(semLock);

}

int main()

{

pthread_t *pThreads;

sem_t semLock;

pThreads = (pthread_t *)malloc(THREAD_NUM*sizeof(pthread_t));

sem_init(&semLock,0,1);

FILE *fp = fopen("test.txt","r");

//开始线程循环

IDD_THREAD_PARAM param;

for(int i=0;i

{

memset(param,0,sizeof(IDD_THREAD_PARAM));

param._fp = fp;

param._nThreadId = i;

param._semLock = &semLock;

pthread_create((pThreads+i),NULL,ThreadFunc,param);

}

for(int i=0;i

pthread_join(*(pThreads+i),NULL);

free(pThreads);

pThreads = NULL;

fclose(fp);

fp = NULL;

return 0;

}

原文:http://my.oschina.net/u/2276921/blog/531057

转载地址:https://blog.csdn.net/weixin_33642922/article/details/117105728 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:cin gt gt a用c语言怎么写写,一初学者问我一问题,C语言的,然后我用笨拙的方法实现cin.putback...
下一篇:大数加减法运算C语言,求用C编个大数加减法运算程序

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月19日 07时27分59秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章