Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
ninja2
969 / 188 / 32
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
#1

Параллельное исполнение программы - C++

15.06.2013, 00:22. Просмотров 1295. Ответов 28
Метки нет (Все метки)

Здорова господа!
Я от новую задачку делаю, полностью на новую тему, наверно интересную, в общем сразу условие приведу:
Понятия потока, задачи и процесса составляют основные понятия параллельного исполнения программ на вашем компьютере. Разберитесь подробнее в этих механизмах. Для предотвращения одновременного доступа двух задач к одной области памяти применяется блокировка. Реализуйте класс блокировки, опираясь на системный механизм блокировок на вашей машине.

Все новое для меня. Понятие потока? Да хз что это такое. Задачи и процессы тоже хз. Ну что такое блокировка, есть в определении задачи, но что это за класс блокировки и как его реализовать тоже хз.
Не понятная задачка.
Просветите новичка!!!!!!

Добавлено через 1 минуту
Я не знаю с чего ее начинать, то делать.
http://www.cyberforum.ru/cpp-beginners/thread1417414.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.06.2013, 00:22
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Параллельное исполнение программы (C++):

Программа не запускается на исполнение
Доброй ночи. Возникла такая проблема: написал программу, должно быть...

Исполнение команды в винде
Кто-нибудь делал екзешник для винды, который запускает исполнение команды: ...

Повторить исполнение кода
Разработал такой супер-код, подскажите, как сделать, чтобы после последнего...

Запуск файла на исполнение
Нужна функция (или кусок кода позволяющий это делать). Проблема такова,...

Исполнение кода из текстовой переменной.
Есть текстовая переменная. (конкретно массив TCHAR) В ней находится кусок...

28
gray_fox
What a waste!
1552 / 1257 / 165
Регистрация: 21.04.2012
Сообщений: 2,634
Завершенные тесты: 3
15.06.2013, 01:20 #2
Цитата Сообщение от ninja2 Посмотреть сообщение
Все новое для меня. Понятие потока? Да хз что это такое. Задачи и процессы тоже хз.
Ну так для начала возьми книжку по теории ОС и почитай соответствующие главы; ИМХО это проще, чем ждать, пока кто-нибудь тебе лекцию на форуме прочтёт.
1
ninja2
969 / 188 / 32
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
15.06.2013, 03:19  [ТС] #3
gray_fox, нет мне бы лучше если б кто подсказал. Ну я виндовс хорошо знаю.
0
gray_fox
What a waste!
1552 / 1257 / 165
Регистрация: 21.04.2012
Сообщений: 2,634
Завершенные тесты: 3
15.06.2013, 03:27 #4
Цитата Сообщение от ninja2 Посмотреть сообщение
gray_fox, нет мне бы лучше если б кто подсказал. Ну я виндовс хорошо знаю.
Ну тогда можешь подождать, пока кто-нибудь тебе всё по полочкам разложит) Просто проще самому узнать; оновные понятия (если они тебя интересуют - процессы\потоки и пр.) от платформы не зависят...
1
ninja2
969 / 188 / 32
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
15.06.2013, 04:51  [ТС] #5
gray_fox, Мне б конкретно по делу задачку решить, что такое процесс я тоже как бы знаю, это фигня что в диспетчере устройств запускается, каждая программа занимает один процесс.
0
0x10
2554 / 1734 / 285
Регистрация: 24.11.2012
Сообщений: 4,361
15.06.2013, 06:10 #6
Брать книжку и читать... Перепечатывать несколько глав сюда никто не будет, а в поверхностных объяснениях смысла немного. В личку отправляю пару заданий на лабораторные работы... Мб поможет.
1
ninja2
969 / 188 / 32
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
15.06.2013, 10:47  [ТС] #7
Цитата Сообщение от 0x10 Посмотреть сообщение
Брать книжку и читать... Перепечатывать несколько глав сюда никто не будет, а в поверхностных объяснениях смысла немного. В личку отправляю пару заданий на лабораторные работы... Мб поможет.
А какие книги, то хоть читать? По винапи? Где эта тема будет разобрана? По С++ эту тему вроде не разбираем. Мб литературу кто подскажет!
0
DiffEreD
1441 / 778 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
15.06.2013, 11:01 #8
"Энтони Уильямс - Параллельное программирование на С++ в действии"
1
0x10
2554 / 1734 / 285
Регистрация: 24.11.2012
Сообщений: 4,361
15.06.2013, 11:03 #9
Книги по системному программированию в unix. Что-нибудь такое:
http://www.ozon.ru/context/detail/id/2419365/
http://www.ozon.ru/context/detail/id/3406745/
1
ninja2
969 / 188 / 32
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
15.06.2013, 11:18  [ТС] #10
Наверно я пропущу эту задачку, а то на разбор много времени потрачу щас, потом просто эту книгу прочитаю http://www.ozon.ru/context/detail/id/17636939/ и мб потом решу ее.

А мб кто конкретно код может скинуть с примером?

Ну эта задачка конечно сложная с оценкой (*3) , поэтому я сильно не надеюсь что кто то поможет.
0
Desu_Is_A_Lie
62 / 62 / 16
Регистрация: 26.02.2012
Сообщений: 114
15.06.2013, 11:43 #11
Под Win смотреть сюда: http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx

Если же не
Цитата Сообщение от ninja2 Посмотреть сообщение
опираясь на системный механизм блокировок на вашей машине
то проще сделать на основе http://en.cppreference.com/w/cpp/thread/mutex
0
ninja2
969 / 188 / 32
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
15.06.2013, 11:52  [ТС] #12
Ладно с литературой, давайте все же попытаемся конкретно задачу разобрать!
От я так думаю нам нужно написать программку которая будет запускать два процесса и из этих процессов будет обращаться к одной области памяти. А что бы они не смогли этого сделать будет класс блокировки. От нужно что то приметивное токо в виде кода написать. Кто сможет это сделать в виде кода? Мб есть щарящие люди?
0
XRuZzz
Антикодер
1367 / 643 / 36
Регистрация: 15.09.2012
Сообщений: 2,611
15.06.2013, 12:12 #13
Для потоков я раньше использовал библиотеку POSIX Thread

Как насчёт написания кода под ОС Linux?

Не по теме:


Может если помогу Гуру С++, тоже стану гуру



но я от вас по использованию потоков не очень далеко ушёл, поэтому вместе придётся разбираться.
0
ninja2
969 / 188 / 32
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
15.06.2013, 12:20  [ТС] #14
Цитата Сообщение от XRuZzz Посмотреть сообщение
Как насчёт написания кода под ОС Linux?
Да нет под линукс нет.
Цитата Сообщение от XRuZzz Посмотреть сообщение
Для потоков я раньше использовал библиотеку POSIX Thread, а вам можно использовать только API ОС?
Да нет так как в условии записано, то и использовать.

Цитата Сообщение от XRuZzz Посмотреть сообщение
но я от вас по использованию потоков не очень далеко ушёл, поэтому вместе придётся разбираться.
Да мб хоть кто примерчик просто приведет.

Господа ну что вы так затихли все? Давайте я вам конкретную задачку приведу что нужно сделать. Нужно создать два процесса и параллельно в одном допустим что то посчитать, и в другом тоже что то мелкое, а потом вывести результаты на экран. Ладно уже без обращения к одной ячейки памяти, без использования блокировки, либо стандартная блокировка будет использоваться, либо с помощью уже средств стл. Просто же рабочий пример с двумя процессами или задачами. Все ж просто Гуру где вы? Ау!!!!

В моей задачке я так понимаю что то нужно свое сделать. Ок, давайте хоть напишем пример уже стандартными средствами.

Ну я мб тут напутал с терминами и с тем что делать, так как не в теме.

Добавлено через 4 минуты
Desu_Is_A_Lie, И литературу желательно на русском, не все английский знают.
0
castaway
Эксперт С++
4926 / 3033 / 453
Регистрация: 10.11.2010
Сообщений: 11,089
Записей в блоге: 10
Завершенные тесты: 1
15.06.2013, 12:24 #15
Цитата Сообщение от ninja2 Посмотреть сообщение
Да нет так как в условии записано, то и использовать.
В условии не написано что использовать.
Цитата Сообщение от ninja2 Посмотреть сообщение
Мб есть щарящие люди?
Какому шарящему интересно решать задачу для не шарящего?
0
ninja2
969 / 188 / 32
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
15.06.2013, 12:26  [ТС] #16
Цитата Сообщение от lazybiz Посмотреть сообщение
В условии не написано что использовать.
Значит что знаешь то и используй.
Цитата Сообщение от lazybiz Посмотреть сообщение
Какому шарящему интересно решать задачу для не шарящего?
А не шарящему, интересней? Просто шарящему это не составит труда.
0
XRuZzz
Антикодер
1367 / 643 / 36
Регистрация: 15.09.2012
Сообщений: 2,611
15.06.2013, 12:26 #17
Цитата Сообщение от ninja2 Посмотреть сообщение
Да нет под линукс нет.
Тогда сами разбирайтесь (так как Linux самая стандартная ОС в мире )

Цитата Сообщение от ninja2 Посмотреть сообщение
Все ж просто Гуру где вы? Ау!!!!
Так это же вы!
0
castaway
Эксперт С++
4926 / 3033 / 453
Регистрация: 10.11.2010
Сообщений: 11,089
Записей в блоге: 10
Завершенные тесты: 1
15.06.2013, 12:28 #18
Цитата Сообщение от ninja2 Посмотреть сообщение
Значит что знаешь то и используй.
Спасибо за совет, я так всегда и делаю)
0
0x10
2554 / 1734 / 285
Регистрация: 24.11.2012
Сообщений: 4,361
15.06.2013, 12:31 #19
ninja2, три строчки, порождение дочернего процесса.
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
#include <stdio.h>
#include <unistd.h>
 
int main()
{
    pid_t pid = fork();
 
    if (pid < 0)
    {
        perror("fork");
        return 1;
    }
 
    if (pid == 0)
    {
        printf("Child process: %d, parent is %d\n", getpid(), getppid());
    }
    else
    {
        printf("Parent process: %d\n", getpid());
    }
 
    return 0;
}
Объяснение что тут происходит равносильно перепечатыванию книги. Документация - man fork http://linux.die.net/man/2/fork, man getpid http://linux.die.net/man/2/getpid.
0
ninja2
969 / 188 / 32
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
15.06.2013, 12:34  [ТС] #20
Цитата Сообщение от XRuZzz Посмотреть сообщение
Тогда сами разбирайтесь (так как Linux самая стандартная ОС в мире )
Я думаю виндовс стандарт. Да какая разница, там что диспетчер устройств разные? Да они вроде как одинаковые, ну я сильно разници не заметил, что там если что виснет снимаешь процес, что и в виндовс.
Цитата Сообщение от lazybiz Посмотреть сообщение
Спасибо за совет, я так всегда и делаю)
Да не за что, всегда рад помочь!

Добавлено через 1 минуту
0x10, Можно просто догадаться или сделать предположение что там происходит, глядя на поведение программы. Так что ничего страшного, главное что хоть какой то примерчик кода есть.
0
15.06.2013, 12:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.06.2013, 12:34
Привет! Вот еще темы с решениями:

Исполнение функции-члена в отдельном потоке
Здравствуйте, форум! Вот такой вот пример: Имеется класс, в котором есть 3...

Исполнение .cmd через вызов CreateProcess()
Привет. Заранее извините, если написал не туда. Есть .cmd файл, который надо...

Программа на исполнение запускается, но пишет, что проект окончился крахом
В этом коде выдает такую ошибку: #include &quot;widget.h&quot; #include &quot;ui_widget.h&quot;...

Как остановить исполнение консольного приложения без выхода из него?
То есть, если пишу exit(1); , то консоль закрывается, но там есть информация о...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

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