我在 C 中的以下代码有问题。基本上我想创建两个线程并给它们两个整数值 "ergebnis" 。在此之后,线程应该必须单独计算这个值并打印它们各自的结果。
编译时出现此错误:
3.2.c: In function ‘erhoehenumeins’:
3.2.c:10:13: warning: dereferencing ‘void *’ pointer [enabled by default]
3.2.c:10:13: error: void value not ignored as it ought to be
3.2.c: In function ‘verdoppeln’:
3.2.c:20:18: error: invalid operands to binary * (have ‘void *’ and ‘int’)
编码:
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <pthread.h>
#include <stdlib.h>
void *erhoehenumeins(void * dummy) {
printf("Thread erhoehenumeins() wurde gestartet\n");
int temp;
temp= dummy+1;
printf("Thread erhoehenumeins() wurde beendet\n");
printf("Ergebnis=%d\n",temp);
}
void *verdoppeln(void * dummy) {
printf("Thread verdoppeln() wurde gestartet\n");
int temp=dummy*2;
printf("Thread verdoppeln() wurde beendet\n");
printf("Ergebnis=%d\n",temp);
}
int main() {
int ergebnis=3;
pthread_t thread1, thread2;
// Thread 1 erzeugen
pthread_create( &thread1, NULL, &erhoehenumeins, &ergebnis );
// Thread 2 erzeugen
pthread_create( &thread2, NULL, &verdoppeln, &ergebnis );
// Main-Thread wartet auf beide Threads.
pthread_join( thread1, NULL );
pthread_join( thread2, NULL );
printf("\nHaupt-Thread main() wurde beendet\n");
exit(0);
}
感谢您的帮助!