我需要同时运行两个独立的进程.一个只是侦听端口X,并在收到数据时发送数据,第二个是执行其他操作.
我试过这个:
pthread_t thread1, thread2;
int iret1, iret2;
iret1 = pthread_create( &thread1, NULL, getAddress(), NULL);
iret2 = pthread_create( &thread2, NULL, operate(), (struct IPlist) *IPlist);
在第一个我想运行get(Address)- 监听和发送部分,在第二个我需要运行operate()一个arg:*IP list //(struct IPlist *IPlist)
但是,它显示错误:
warning: passing argument 3 of ‘pthread_create’ makes pointer from integer without a cast
/usr/include/pthread.h:225: note: expected ‘void * (*)(void *)’ but argument is of type int
error: incompatible type for argument 4 of ‘pthread_create’
/usr/include/pthread.h:225: note: expected ‘void * __restrict__’ but argument is of type ‘struct IPlist’
这有什么不对?
我真的不懂手册,所以我在这里问.
谢谢你的帮助!!
使用getAddress和operate代替getAddress()和operate()调用时pthread_create.您必须提供functions而不是他们的返回值.
您还需要通过最后一个参数将数据提供给这些线程.它应该是这样的:
struct IPlist *IPlist;
iret1 = pthread_create( &thread1, NULL, getAddress, IPlist);
iret2 = pthread_create( &thread2, NULL, operate, IPlist);
Run Code Online (Sandbox Code Playgroud)
你的功能应该是这样的:
void* getAddress(void* data) { struct IPlist *IPlist = data ; /* ... */ }
void* operate(void* data) { struct IPlist *IPlist = data ; /* ... */ }
Run Code Online (Sandbox Code Playgroud)
如果您的程序一直停滞,请务必检查pthread_mutex对象.
| 归档时间: |
|
| 查看次数: |
443 次 |
| 最近记录: |