Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // gcc main.c -o main -lpthread
- // ./main 3 12 10 11
- #include <stdio.h>
- #include <pthread.h>
- #include <stdlib.h>
- void* func(void* data){ //потоковая функция
- int n = atoi((char*)data);
- for (int i = 0; i < n; i++){
- printf("Поток id=%lu значение i=%d \n", pthread_self(), i);
- }
- pthread_exit(0); //завершаем поток
- }
- int main(int argc, char** args){
- int k = argc-1; //кол-во потоков
- pthread_t *tid = malloc(sizeof(pthread_t*)*k); //создаем идентификаторы потока
- //создаем потоки по идентификатору tid и функции потока func
- //и передаем потоку указатель на данные args
- for (int i = 0; i < k; i++){
- pthread_create(&tid[i], NULL, func, args[i+1]);
- }
- for (int i = 0; i < k; i++){ //ждем завершения потоков
- pthread_join(tid[i], NULL);
- }
- free(tid);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement