gpt4 book ai didi

c - 运行两个线程 [c]

转载 作者:行者123 更新时间:2023-12-02 08:53:30 25 4
gpt4 key购买 nike

我需要同时运行两个单独的进程。一个只是监听端口 X,并在收到某物时发送数据,第二个正在做一些其他事情。

我试过这个:pthread_t 线程1,线程2;int iret1, iret2;

iret1 = pthread_create( &thread1, NULL, getAddress(), NULL);

iret2 = pthread_create( &thread2, NULL, opera(), (struct IPlist) *IPlist);

在第一个中,我想运行 get(Address) - 监听和发送部分,在第二个中,我需要运行 operate() 与一个arg: *IP 列表//(struct IPlist *IPlist)

但是,它显示错误:

警告:传递“pthread_create”的参数 3 使指针来自整数而不进行强制转换/usr/include/pthread.h:225:注意:预期为“void * (*)(void *)”,但参数为 int 类型

错误:‘pthread_create’的参数 4 的类型不兼容/usr/include/pthread.h:225:注意:预期为“void * __restrict__”,但参数的类型为“struct IPlist”

这里出了什么问题?

我不太懂手册,所以在这里问。

感谢您的帮助!!

最佳答案

调用pthread_create时使用getAddressoperate而不是getAddress()operate() 。您必须提供函数而不是它们的返回值。

您还需要通过最后一个参数向这些线程提供数据。它应该是这样的:

struct IPlist *IPlist;
iret1 = pthread_create( &thread1, NULL, getAddress, IPlist);
iret2 = pthread_create( &thread2, NULL, operate, IPlist);

你的函数应该是这样的:

void* getAddress(void* data) { struct IPlist *IPlist = data ; /* ... */ }
void* operate(void* data) { struct IPlist *IPlist = data ; /* ... */ }

如果您的程序一直停滞不前,请务必查看pthread_mutex对象。

关于c - 运行两个线程 [c],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6745623/

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