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

Потоки - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ как создать "тип в типе" http://www.cyberforum.ru/cpp-beginners/thread247269.html
Всем, привет! Изучаю STL. Такая строчка кода list<int>:: interator it; вызвала у меня вопрос: а как мы можем сделать так, что бы в объекте (list<int>) мы могли определять тип (iterator) ? я пробовал такой вариант class templateClass { public: T* t;
C++ c++ для начинающих даны вещественные матрицы А(4,3) В(3,4) С(4,5) используя процедуру , которая в матрице обнуляет все дробные отрицательные элементы , преобразовать данные матрицы .какой из полученных матриц больше нулевых элементов (сколько) .помогите!!! http://www.cyberforum.ru/cpp-beginners/thread247267.html
Дано натуральное число P. Определить все совершенные числа, не превосходящие P C++
Дано натуральное число P. Определить все совершенные числа, не превосходящие P. после паскаля никак не въеду что к чему:( #include<stdio.h> #include<conio.h> #include<iostream.h> #include<math.h> ...
C++ вопрос по System
Здравствуйте господа програмисты!вопрос такой-если мы знаем название папки,а про файл знаем только расширение можно написать вот так-System("c:\qwer\*.txt").а как написать тоже самое про папку если папка не известна а файл известен? Заранее всем огромное спасибо!!!
C++ Класс стека http://www.cyberforum.ru/cpp-beginners/thread247252.html
нужна помаш в написание одной программы(задачи) вот сама задача: Задание: Реализовать и протестировать контейнерный класс динамической структуры данных, содержащей строки. Класс должен иметь интерфейс АТД для добавления, удаления и поиска элементов, а также содержать следующие функции-члены:  Перегруженные конструкторы: - по умолчанию; - копирования; - с параметрами по умолчанию....
 

Показать сообщение отдельно
Aye Aye
 Аватар для Aye Aye
367 / 281 / 36
Регистрация: 17.12.2009
Сообщений: 567
23.02.2011, 19:44     Потоки
пусть у каждого треда будет имя, и по имени они будут удалятся.
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#include <thread>
#include <iostream>
#include <string>
#include <list>
 
class my_thread {
private:
  std::thread this_thread;
  std::string name;
  bool go_on;
public:
  my_thread(const my_thread &t): name(t.name), go_on(true) {
  }
  my_thread(const std::string &s): name(s), go_on(true) {
  }
  void run() {
      this_thread = std::thread(&my_thread::go, this);
  }
  void join() {
    this_thread.join();
  }
  void go() {
    while (go_on) {
      std::cerr << "I am " << name << std::endl;
      sleep(1);
    }
  }
  void stop() {
    go_on = false;
  }
  std::string getName() {
    return name;
  }
};
 
int menu() {
  int ans;
  std::cout << "Menu::\n"
    "1-make new.\n"
    "2-list all.\n"
    "3-kill target.\n"
    "4-exit.\n";
  std::cin >> ans;
  return ans;
}
int main()
{
  std::list<my_thread> pool;
  bool exit = false;
  while (not exit) {
    int ans = menu();
    std::string s;
    switch(ans) {
    case 1:
      // creating new
      std::cout << "Enter thread name: ";
      std::cin >> s;
      pool.push_back(s);
      pool.back().run();
      break;
    case 2:
      // listing all threads
      std::cout << "--All threads: \n";
      for (auto i = pool.begin(); i != pool.end(); ++i) {
    std::cout << i->getName() << std::endl;
      }
      std::cout << "--end of thread list.\n";
      break;
    case 3:
      // deleting one of threads
      std::cout << "Enter name of thread: ";
      std::cin >> s;
      for (auto i = pool.begin(); i != pool.end(); ++i) {
    if (i->getName() == s) {
      i->stop();
      i->join();
      auto t = i;
      ++i;
      pool.erase(t);
    }
      }
      break;
    case 4:
      // exit
      for (auto i = pool.begin(); i != pool.end(); ++i) {
      i->stop();
      i->join();
      }
      pool.clear();
      exit = true;
      break;
    default:
      std::cout << "Unknowen command.\n";
    }
  }
  return 0;
}
компиляция: g++ ./tr_count.cpp -o prg --std=c++0x -g -lpthread
запуск: ./prg 2> log

все треды будут писать в файл log его можно открыть и убедиться что они работали.
 
Текущее время: 03:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru