gpt4 book ai didi

C - 从带线程的文件中读取

转载 作者:太空宇宙 更新时间:2023-11-04 02:55:11 25 4
gpt4 key购买 nike

我必须使用 5 个线程(每个线程读取一个数字)从文件中读取一些数字,同步对文件本身的访问。我想知道让线程共享互斥锁和文件指针的后续方法是否等效:

1) 声明互斥体和文件作为全局变量读取

#include <....>

pthread_mutex_t mtx = PTHREAD_MUTEX_INITIALIZER;
FILE *fp;

int main(int argc,char *argv[]){

fp=open_file(argv[1]);
}

和 2) 为线程定义一个数据结构,然后将其字段与互斥量和主函数中的文件相关联

#include <....>

struct data
{
pthread_t tid;
pthread_mutex_t *ptmx;
FILE *f;

.....
}

int main(int argc,char* argv[])
{
FILE *fp=open_file(argv[1]);
struct data td[5];
pthread_mutex_t mtx;

pthread_mutex_init(&mtx,NULL)

for(i=0;i<5;i++)
{
td[i].f=fp;
td[i].ptmx=&mtx;
}

....
}

为了简单起见,我只报告了一段代码,并且假设该文件是通过行命令传递的。

最佳答案

是的,这些是完全等价的。

在这两种情况下,线程都有互斥锁和 FILE 指针可见,共享相同的值。

关于C - 从带线程的文件中读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18559711/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com