Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Как найти мультипликативное число? http://www.cyberforum.ru/cpp-beginners/thread1308654.html
31mod105
C++ Программа текстовый редактор html Такая проблема, по заданию нужно создать текстовый редактор HTML кода. я как пыталась все не выходит, препод сказал что проблема с кодировкой. очень нужна помощь(( написать его на с++ на визуал . главное что бы он работал, требования минимальные(без крутого интерфейса), главное что бы была проверка синтаксиса и подсветка+ пару менеджеров (шрифт, цвет шрифта). помогите девушке) :cry: http://www.cyberforum.ru/cpp-beginners/thread1308641.html
C++ Программа, форматирующая код
Добрый вечер. Нужна помощь с написанием программы, которая могла форматировать код, читая его с текстового файла, и записывать его в нормальном виде в файл. Форматирование заключается, чтобы правильно расставить переносы строк и пробелы (4) в циклах и условиях. Например: for (int i=0;i<10;i++) { std::cout<<s; } for (int i=0;i<10;i++) { std::cout<<s; }
C++ Создать программу, которая способна генерировать геометрические примитивы
Четвёртая: Создать программу, которая способна генерировать (или создать на основе введённых данных, или в контекстном меню выбрать один из заранее созданных (на выбор выполняющего работу)) геометрические примитивы (отрезок, кривая линия, звезда, круг, треугольник, параллелограмм и так далее), после “записывает” примитив в файл, с последующей возможностью его оттуда извлечь в программу.
C++ Составить программу, которая в диалоговом режиме руководит графическими объектами http://www.cyberforum.ru/cpp-beginners/thread1308635.html
Тема: Подражание. Полиморфизм. Постановка задачи: Составить программу, которая в диалоговом режиме руководит графическими объектами, отображаемых на экране дисплея. Программа должна поддерживать такие общие элементы поведения графических объектов: 1. Активизация / визуализация по выбору. 2. Перемещение со следом / без. 3. Восстановление исходного состояния образа. 4. Изменение цвета. 5....
C++ Создать объектно-ориентированную библиотеку для работы со структурами данных Вторая: Сделать объектно-ориентированную библиотеку (программу, которую будет просто подключать в другие программы для использования её возможностей работы со структурами данных) для работы со структурами данных приведённого ниже типа: Орграфы (ориентированный граф (кратко орграф) — (мульти) граф, рёбрам которого присвоено направление. Направленные рёбра именуются также дугами, а в некоторых... подробнее

Показать сообщение отдельно
DiffEreD
 Аватар для DiffEreD
1424 / 761 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
24.11.2014, 15:40     Как десятью потоками выполнить операцию 50 раз
Когда что подобное делал. Вот, может подойдет мой пример:
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;
}
 
Текущее время: 23:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru