Форум программистов, компьютерный форум, киберфорум
Наши страницы

Как десятью потоками выполнить операцию 50 раз - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как найти мультипликативное число? http://www.cyberforum.ru/cpp-beginners/thread1308654.html
31mod105
C++ Программа текстовый редактор html Такая проблема, по заданию нужно создать текстовый редактор HTML кода. я как пыталась все не выходит, препод сказал что проблема с кодировкой. очень нужна помощь(( написать его на с++ на визуал .... http://www.cyberforum.ru/cpp-beginners/thread1308641.html
C++ Программа, форматирующая код
Добрый вечер. Нужна помощь с написанием программы, которая могла форматировать код, читая его с текстового файла, и записывать его в нормальном виде в файл. Форматирование заключается, чтобы...
C++ Создать программу, которая способна генерировать геометрические примитивы
Четвёртая: Создать программу, которая способна генерировать (или создать на основе введённых данных, или в контекстном меню выбрать один из заранее созданных (на выбор выполняющего работу))...
C++ Составить программу, которая в диалоговом режиме руководит графическими объектами http://www.cyberforum.ru/cpp-beginners/thread1308635.html
Тема: Подражание. Полиморфизм. Постановка задачи: Составить программу, которая в диалоговом режиме руководит графическими объектами, отображаемых на экране дисплея. Программа должна поддерживать...
C++ Создать объектно-ориентированную библиотеку для работы со структурами данных Вторая: Сделать объектно-ориентированную библиотеку (программу, которую будет просто подключать в другие программы для использования её возможностей работы со структурами данных) для работы со... подробнее

Показать сообщение отдельно
DiffEreD
1441 / 778 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
24.11.2014, 15:40
Когда что подобное делал. Вот, может подойдет мой пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <iostream>
#include <thread>
#include <future>
#include <vector>
#include <chrono>
#include <random>
#include <cmath>
#include <mutex>
#include <functional>
#include <algorithm>
 
std::mutex mut;
 
void foo(std::mt19937 & mt) {
   std::uniform_int_distribution<> dist{1, 10};
   std::this_thread::sleep_for(std::chrono::seconds(dist(mt)));
   std::lock_guard<std::mutex> locker{mut};
   std::cout << "foo() from thread ID: " << std::this_thread::get_id() << "\n";
}
 
int main()
{
   std::mt19937 gen{static_cast<unsigned>(std::time(nullptr))};
 
   using fiture_t = std::future<void>;
   std::vector<fiture_t> futures(10);
 
   std::cout << std::unitbuf;
   for (fiture_t& f : futures)
   {
      f = std::async(std::launch::async, foo, std::ref(gen));
   }
 
   int numberOfTask = 40;
   while (numberOfTask > 0)
   {
      auto ready = std::find_if(futures.begin(), futures.end(), [](fiture_t& fut)
      {
         return fut.wait_for(std::chrono::milliseconds(10)) == std::future_status::ready;
      });
 
      if (ready == futures.end()) continue;
 
      else
      {
         ready->get();
         *ready = std::async(std::launch::async, foo, std::ref(gen));
         --numberOfTask;
      }
   }
   std::this_thread::sleep_for(std::chrono::seconds(12));
 
   system("pause");
   return 0;
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru