|
/tmp/ccGycMxS.o(.text+0x21): In function `main':
: undefined reference to `pthread_create'
/tmp/ccGycMxS.o(.text+0x5c): In function `main':
: undefined reference to `pthread_create'
/tmp/ccGycMxS.o(.text+0x8f): In function `main':
: undefined reference to `pthread_join'
/tmp/ccGycMxS.o(.text+0x9f): In function `main':
: undefined reference to `pthread_join'
collect2: ld returned 1 exit status
- #include <stdio.h>
- #include <stdlib.h>
- #include <pthread.h>
- void task1(int *counter);
- void task2(int *counter);
- void cleanup(int counter1, int counter2);
- int g1 = 0;
- int g2 = 0;
- int main(int argc, char *argv[])
- {
- pthread_t thrd1, thrd2;
- int ret;
- ret = pthread_create(&thrd1, NULL, (void *)task1, (void *)&g1);
- if (ret) {
- perror("pthread_create: task1");
- exit(EXIT_FAILURE);
- }
- ret = pthread_create(&thrd2, NULL, (void *)task2, (void *)&g2);
- if (ret) {
- perror("pthread_create: task2");
- exit(EXIT_FAILURE);
- }
- pthread_join(thrd2, NULL);
- pthread_join(thrd1, NULL);
- cleanup(g1, g2);
- exit(EXIT_SUCCESS);
- }
- void task1(int *counter)
- {
- while (*counter < 5) {
- printf("task1 count: %d\n", *counter);
- (*counter)++;
- sleep(1);
- }
- }
- void task2(int *counter)
- {
- while (*counter < 5) {
- printf("task2 count: %d\n", *counter);
- (*counter)++;
- }
- }
- void cleanup(int counter1, int counter2)
- {
- printf("total iterations: %d\n", counter1 + counter2);
- }
复制代码 |
|