运行两个线程[E]

sha*_*ggy 2 c multithreading

我需要同时运行两个独立的进程.一个只是侦听端口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’

这有什么不对?

我真的不懂手册,所以我在这里问.

谢谢你的帮助!!

Tug*_*tes 5

使用getAddressoperate代替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对象.