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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,165
Завершенные тесты: 2
#1

Упражнение по многопоточному программированию - C++

23.05.2014, 21:23. Просмотров 196. Ответов 0
Метки нет (Все метки)

Добрый день уважаемые форумчане. Понял что имею большую дыру в познаниях в многопоточном программировании, нашел упражения и потихоньку делаю, если кого не затруднит прокоментируйте следующий код - имеет ли он право на жизнь
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
/*15. Синхронизированный доступ к списку
 
Родительская нить программы должна считывать вводимые
пользователем строки и помещать их в начало связанного списка.
Строки длиннее 80 символов можно разрезать на несколько строк.
При вводе пустой строки программа должна выдавать текущее состояние
списка. Дочерняя нить пробуждается каждые пять секунд и сортирует
список в лексикографическом порядке (используйте пузырьковую 
сортировку). Все операции над списком должны синхронизоваться
при помощи мутекса.*/
 
#include <iostream>
#include <string>
#include <mutex>
#include <deque>
#include <chrono>
#include <thread>
#include <algorithm>
#include <iterator>
 
std::mutex g_mutex;
std::deque<std::string> g_strList;
 
void list_sorting()
{
    while(true)
    {
        std::this_thread::sleep_for(std::chrono::seconds(5));
        std::lock_guard<std::mutex> lk(g_mutex);
        std::sort(g_strList.begin(), g_strList.end());
    }
}
 
 
int main()
{
    std::thread th(list_sorting);
    th.detach();
 
    while(true)
    {
        std::string inputStr;
        std::getline(std::cin, inputStr);
        if(inputStr.empty())
            std::copy(g_strList.begin(), g_strList.end(), std::ostream_iterator<std::string>(std::cout, "\n"));
        else if(inputStr == "quit")
            break;
        else
        {
            std::lock_guard<std::mutex> lk(g_mutex);
            g_strList.push_front(inputStr);
        }
    }
    return 0;
}
разбиение строки соответственно не вставлял + сортировка не пузырьком
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.05.2014, 21:23     Упражнение по многопоточному программированию
Посмотрите здесь:

Упражнение по программированию (Стивен Прата, глава 2, упражнение 3) - C++
2 Глава, вопрос 3. Напишите программу на С++, которая использует три определяемых пользователем функции (включая main()) и генерирует...

Упражнение - C++
Нужна помощь! Помогите решить упражнение, написав программы на языке С Написать функции для выполнения следующих операций: 1)...

Упражнение по рефакторингу - C++
Предлагаю Вашему вниманию пример кода. Мне бы хотелось узнать, какие бы шаги Вы предприняли для улучшения данного кода? Общий целевой...

Упражнение на строки - C++
Петя записался в кружок по программированию. На первом занятии Пете задали написать простую программу. Программа должна делать следующее: в...

Упражнение из книги. - C++
В книге (Язык программирования С++. Вводный курс. 4-е изд. (Стенли Липпман)) есть задание: &quot;Напишите программу, читающую строки в...

Упражнение из книги Лафоре - C++
//11.cpp #include &lt;iostream&gt; using namespace std; class sterling { private: long pounds; int shil; int pens;

Упражнение из учебника С. Липпмана - C++
1. Напишите программу, которая запрашивает у пользователя два числа и выводит на стандартное устройство вывода все числа, которые находятся...

Упражнение с использованием векторов - C++
Ребят помогите. Дана последовательность с целыми числами. Удалить из массива все максимальные элементы. Я решала подобную задачу но не...

Упражнение с использованием структуры - C++
Ребят помогите.На основе данных в input.txt составить список студентов группы включив в них следующие данные: фио, год рождения, домашний...

Упражнение из Страуструпа: конкатенация С-строк - C++
Напишите функцию cat(), которая принимает в качестве аргументов две С-строки и возвращает конкатенированную С-строку. Используйте операцию...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru