c - 运行两个线程 [c]

标签 c multithreading

我需要同时运行两个单独的进程。一个只是监听端口 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/

相关文章:

multithreading - Delphi 中增加和返回整数的线程安全方法

ios - 如何根据线程动态使用MOC来保护核心数据

c - 无论如何要检查 str 函数是否成功?

命令行参数被跳过,其余的主要部分开始运行

将 mmap 的内存区域从 MAP_SHARED 更改为 MAP_PRIVATE

c# - 我可以拦截 Task.Factory.StartNew 吗?

c - 读取密码文件时,程序从未遇到 EOF

C header 和未声明变量中的类型冲突?

python - 在 Python 中正确使用互斥锁

java - 使用 thread.start() 连续调用重绘不起作用