Среда, 25.06.2025, 03:36
СГУ.clan - в помощь студентам!
Главная | Регистрация |Вход Приветствую Вас Школьник | RSS
Меню сайта
ПОИСК ДЛЯ ПРОГРАММИСТОВ
 Google поиск для программистов
Категории каталога
Статьи [22]
Не СГУ [9]
Факультет КНиИТ [340]
Биологический факультет [16]
Географический факультет [31]
Геологический факультет [36]
Институт истории [67]
Механико-математический факультет [190]
Социологический факультет [68]
Фак-т нано и биомедицинских техн... [99]
Факультет нелинейных процессов [36]
Физический факультет [66]
Институт филологии и журналистики [29]
Химический факультет [70]
Экономический факультет [55]
Юридический факультет [31]
Наш опрос
Каких оценок в Вашей зачетке больше?
Всего ответов: 240

Напоминаем, что если необходимый Вам файл был удален с сервера DepositFiles (за исключением просьбы автора), то Вы можете написать в комментарии о необходимости в данном файле. В ближайшее время он будет перезалит (при возможности на сервер сайта).

Главная » Файлы » Статьи [ Добавить материал ]

Как работать с потоками в Си\Си++
[ ] 18.11.2008, 21:18
Простенький пример показывающий как работать с потоками на языке Си\С++.
Реализуемая задача: создается пять потоков, в каждый из потоков передается случайное число от 1 до 9, поток выводит на экран переданное значение, спит одну секунду, уменьшает значение на единицу и т.д. пока значение числа не будет равно нулю. После завершения выводится время завершения каждого потока.

Code

#include <stdlib.h>
#include <stdio.h>
#include <pthread.h> // подключаем библиотеку для работы с потоками
#include <time.h> // библиотека для работы с функцией времени
#include <errno.h>

int i=0,flag=-1;
pthread_t thread[5]; // объявление пяти потоков

void*potok(void*arg) // функция для вызова в потоках void* - обязателный
// тип возврата для функции, и тип аргумента
{
  flag++;
  int tmp = (int) arg; // преобразуем void* в int
  int tmp2 = tmp;
  while(tmp>0)
  {
  printf("\tMax(%d)=%d\n ",tmp2,tmp);
  sleep(1); // спим одну секунду
  tmp--;
  }
  return (void*)time(NULL); //возвращаем время завершения потока,  
// преобразование к типу void* обязательно
}

int main()
{
  int a;
  time_t t; // объявление переменной для хранения значения времени
// завершения потока
  for(i=0;i<5;i++)
  {
  a=rand()%10; // генерация случайного числа от 1 до 9
  pthread_create(&thread[i],NULL,potok,(void*)a); // создание потоков
  }
  for(i=0;i<5;i++)
  {
  pthread_join(thread[i],(void*)&t); // считываем return с потоков
  printf("\nPotok %d ending at %s",i+1,ctime(&t)); // преобразуем время в  
// char и выводим на экран
  }
  printf("\n");
  return 0;
}
Категория: Статьи |
Просмотров: 1227 | Загрузок: 0 | Рейтинг: 0.0/0 |

Данный файл Вам очень помог? Вы можете отблагодарить автора!

Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Правильные покупки

Поиск
Друзья сайта


Статистика

Онлайн всего: 4
Гостей: 4
Пользователей: 0
Copyright СГУ.clan © 2025