我需要同时运行两个单独的进程。一个只是监听端口 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时使用
。您必须提供getAddress
和operate
而不是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/