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

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

Восстановить пароль Регистрация
 
Кудаив
328 / 405 / 24
Регистрация: 27.05.2012
Сообщений: 1,162
Завершенные тесты: 2
23.05.2014, 21:23     Упражнение по многопоточному программированию #1
Добрый день уважаемые форумчане. Понял что имею большую дыру в познаниях в многопоточном программировании, нашел упражения и потихоньку делаю, если кого не затруднит прокоментируйте следующий код - имеет ли он право на жизнь
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     Упражнение по многопоточному программированию
Посмотрите здесь:

Какая книга по программированию обьясняет все с математикой и подробно излагает все темы?По программированию? C++
Упражнение с использованием структуры C++
C++ Упражнение с использованием векторов
Упражнение C++
Упражнение из учебника С. Липпмана C++
Упражнение из книги. C++
Упражнение из книги Лафоре C++
Упражнение на строки C++

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

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

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