c语言多线程案例(C 语言多线程怎么读文件高效)

:暂无数据 2026-07-05 21:00:02 :2

c语言多线程案例(C 语言多线程怎么读文件高效)

本篇文章给大家谈谈c语言多线程案例,以及C 语言多线程怎么读文件高效对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录

C 语言多线程怎么读文件高效

C语言---多个线程读取文件,其代码如下:
#include
#include
#include
#include
#include
#include
#define THREAD_NUM 25
typedef struct
{undefined
FILE *_fp;
int _nThreadId;//第几个线程
sem_t *_semLock;
}IDD_THREAD_PARAM;
void *ThreadFunc(void *args)
{undefined
char sLine;
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))
{undefined
memset(sLine,0,sizeof(sLine));
fgets(sLine,100,fpRead);
fprintf(stderr,"Thread ID-%d:%s",nId,sLine);
}
sem_post(semLock);
}
int main()
{undefined
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
{undefined
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;
}

如何用C语言实现多线程下生产者消费者互斥同步问题

生产者,消费者互斥同步参考如下代码:

#include 《stdio.h》  
#include 《stdlib.h》  
#include 《unistd.h》  
#include 《pthread.h》  
#include 《errno.h》  
#include 《error.h》  
#include 《semaphore.h》  
  
#define PRODUCER_NUM 10  
#define CONSUMER_MUM 8  
#define BUFFER_SIZE 20  
#define SLEEP_TIME 1  
#define error_exit( _msg_ ) error(EXIT_FAILURE, errno, _msg_)  
  
int print();  
void *consumer_thread(void *args);  
void *producer_thread(void *args);  
  
sem_t can_produce;  
sem_t can_consume;  
pthread_mutex_t mutex;  
int produce_index = 0;  
int consume_index = 0;  
int producer_id = 0;  
int consumer_id = 0;  
int buffer = {0};  
int main()  
{  
    int i;  
    pthread_t producer;  
    pthread_t consumer;  
    int sinit1 = sem_init(&can_produce, 0, BUFFER_SIZE);  
    int sinit2 = sem_init(&can_consume, 0, 0);  
    if(sinit1 || sinit2)  
        error_exit("sem_init");  
    if(pthread_mutex_init(&mutex, NULL))  
        error_exit("pthread_mutex_init");  
    for(i=0; i《PRODUCER_NUM; i++)  
        if(pthread_create(&producer, NULL, producer_thread, NULL))  
            error_exit("pthread_create");  
    for(i=0; i《CONSUMER_MUM; i++)  
        if(pthread_create(&consumer, NULL, consumer_thread, NULL))  
            error_exit("pthread_create");  
    for(i=0; i《PRODUCER_NUM; i++)  
        pthread_join(producer, NULL);  
    for(i=0; i《CONSUMER_MUM; i++)  
        pthread_join(consumer, NULL);  
}  
void *producer_thread(void *args)  
{  
    int id = producer_id++;  
    while(1){  
        sleep(SLEEP_TIME);  
        pthread_mutex_lock(&mutex);  
        sem_wait(&can_produce);  
        printf("Producer id %d in %d.\n", id, produce_index);  
        buffer = 1;  
        produce_index = (produce_index + 1) % BUFFER_SIZE;  
        print();  
        sem_post(&can_consume);  
        pthread_mutex_unlock(&mutex);  
    }  
    return NULL;  
}  
void *consumer_thread(void *args)  
{  
    int id = consumer_id++;  
    while(1){  
        sleep(SLEEP_TIME);  
        pthread_mutex_lock(&mutex);  
        sem_wait(&can_consume);  
        printf("Consumer id %d in %d.\n", id, consume_index);  
        buffer = 0;  
        consume_index = (consume_index + 1) % BUFFER_SIZE;  
        print();  
        sem_post(&can_produce);  
        pthread_mutex_unlock(&mutex);  
    }  
    return NULL;  
}  
int print()  
{  
    int i;  
    printf("Buffer:\n");  
    for(i = 0; i 《 BUFFER_SIZE; i++)  
        printf("___");  
    printf("\n");  
    for(i = 0; i 《 BUFFER_SIZE; i++)  
        printf("|%d|", buffer);  
    printf("\n");  
    for(i = 0; i 《 BUFFER_SIZE; i++)  
        printf("___");  
    printf("\n");  
    return 0;  
}

关于c语言多线程案例到此分享完毕,希望能帮助到您。

c语言多线程案例(C 语言多线程怎么读文件高效)

本文编辑:admin

本文相关文章:


collects(collect怎么读)

collects(collect怎么读)

大家好,今天小编来为大家解答以下的问题,关于collects,collect怎么读这个很多人还不知道,现在让我们一起来看看吧!

2026年11月2日 21:10

flex怎么读音发音(peaceminusone怎么读)

flex怎么读音发音(peaceminusone怎么读)

这篇文章给大家聊聊关于flex怎么读音发音,以及peaceminusone怎么读对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

2026年10月18日 10:40

buildingblocks(积木的英语怎么读)

buildingblocks(积木的英语怎么读)

今天给各位分享积木的英语怎么读的知识,其中也会对积木的英语怎么读进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年9月23日 21:30

services怎么读英语(服务英文怎么读)

services怎么读英语(服务英文怎么读)

今天给各位分享服务英文怎么读的知识,其中也会对服务英文怎么读进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年8月13日 04:50

更多文章:


dos命令清屏(Windows DOS内部命令详解04——del、ren、cls、ver、date、time)

dos命令清屏(Windows DOS内部命令详解04——del、ren、cls、ver、date、time)

“dos命令清屏”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看dos命令清屏(Windows DOS内部命令详解04——del、ren、cls、ver、date、time)!

2026年11月6日 15:40

constantly的用法及词组(英语时态对应的时间状语都有哪些)

constantly的用法及词组(英语时态对应的时间状语都有哪些)

本篇文章给大家谈谈constantly的用法及词组,以及英语时态对应的时间状语都有哪些对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

2026年11月6日 15:20

sql2016安装后如何打开(怎么打开sql server 2016 管理工具)

sql2016安装后如何打开(怎么打开sql server 2016 管理工具)

本篇文章给大家谈谈sql2016安装后如何打开,以及怎么打开sql server 2016 管理工具对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

2026年11月6日 15:10

编程基础指令(数控编程指令有哪些)

编程基础指令(数控编程指令有哪些)

大家好,今天小编来为大家解答以下的问题,关于编程基础指令,数控编程指令有哪些这个很多人还不知道,现在让我们一起来看看吧!

2026年11月6日 12:50

如何运行perl教程(怎样把自己的电脑设置成服务器)

如何运行perl教程(怎样把自己的电脑设置成服务器)

各位老铁们好,相信很多人对如何运行perl教程都不是特别的了解,因此呢,今天就来为大家分享下关于如何运行perl教程以及怎样把自己的电脑设置成服务器的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

2026年11月6日 12:20

arcgis怎么设置文本框样式?用JS怎么实现一个把一个文本框中的选中内容加粗,效果基本上和编辑器的加粗效果相同急需

arcgis怎么设置文本框样式?用JS怎么实现一个把一个文本框中的选中内容加粗,效果基本上和编辑器的加粗效果相同急需

今天给各位分享arcgis怎么设置文本框样式的知识,其中也会对arcgis怎么设置文本框样式进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年11月6日 10:50

停止运行的快捷键(电脑怎么停止运行程序快捷键)

停止运行的快捷键(电脑怎么停止运行程序快捷键)

其实停止运行的快捷键的问题并不复杂,但是又很多的朋友都不太了解电脑怎么停止运行程序快捷键,因此呢,今天小编就来为大家分享停止运行的快捷键的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年11月6日 10:40

bios setup(“Bios setup”怎么在电脑里面设置)

bios setup(“Bios setup”怎么在电脑里面设置)

这篇文章给大家聊聊关于bios setup,以及“Bios setup”怎么在电脑里面设置对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

2026年11月6日 10:00

三个表盘都代表什么(卡西欧手表里面三个小表盘是什么意思)

三个表盘都代表什么(卡西欧手表里面三个小表盘是什么意思)

各位老铁们,大家好,今天由我来为大家分享三个表盘都代表什么,以及卡西欧手表里面三个小表盘是什么意思的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

2026年11月6日 08:10

国产免费的服务器系统(服务器用什么系统)

国产免费的服务器系统(服务器用什么系统)

大家好,关于国产免费的服务器系统很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于服务器用什么系统的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

2026年11月6日 07:50

最近更新

鼻子的英文怎么写?鼻子英文是什么
2026-11-06 15:30:28 浏览:0
热门文章

新站如何通过网站维护提升SEO排名
2026-10-13 20:56:21 浏览:6
sql server2008下载地址(如何下载SQL Server 2008 R2 SP2免费版)
2026-10-05 05:30:29 浏览:6
标签列表