Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.95
clify
0 / 0 / 2
Регистрация: 08.06.2009
Сообщений: 19
#1

Семафоры(7 потоков) - C++

12.09.2011, 18:37. Просмотров 3098. Ответов 3
Метки нет (Все метки)

Требуется создать программу которая будет создавать 7 потоков и в каждом выполнять операцию а=а-1(изначально установить а=10). Доя решение задачи взаимного исключения использовать семафоры. Семафоры через библиотеку <windows.h>.( ReleaseSemaphore, WaitForSingleObject,CreateThread.) Кто умеет прошу помочь. Можно создать с 2-мя потоками, я думаю я пойму общий принцип. Заранее спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.09.2011, 18:37
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Семафоры(7 потоков) (C++):

Семафоры для динамически созданных потоков
Помогите разобраться, я динамически создаю поток, который имеет общие...

Понятие синхронизации потоков и процессов. Семафоры и мьютексы
Хотелось бы обсудить и уточнить некоторые понятия: 1. Корректно ли...

Создание и завершение процессов и потоков. Приоритеты выполнения потоков
Здравствуйте. Буду очень раз если поможете понять,что конкретно нужно сделать в...

Семафоры
Помогите решить задачу. Есть пример, но делаю по аналогии не получается....

Семафоры
Здравствуйте. Как можно организовать синхронизацию двух программ, которые...

Семафоры
Есть программа с разделением на потоки. Программа подсчитывает количество...

3
sandye51
программист С++
833 / 592 / 147
Регистрация: 19.12.2010
Сообщений: 2,016
12.09.2011, 21:37 #2
Цитата Сообщение от clify Посмотреть сообщение
Можно создать с 2-мя потоками, я думаю я пойму общий принцип
ахах, вместо 2 написать 7 любой дурак сможет
ты походу даже не понимаешь что эти потоки надо в цикле создавать, а не последовательно
0
clify
0 / 0 / 2
Регистрация: 08.06.2009
Сообщений: 19
14.09.2011, 02:20  [ТС] #3
Сделал. Программа кроме этого создает процесс Калькулятора, меняет его приоритет и выводит его PID.

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 "windows.h"
using namespace std;
int a=10;
 
HANDLE hsem1;
 
DWORD WINAPI fproc(LPDWORD lpData)
{
        WaitForSingleObject(hsem1,INFINITE); 
        a--; 
        ReleaseSemaphore(hsem1,1,NULL); 
        return 0;
}
        
 
 
int main()
{
STARTUPINFO si = { sizeof(si) };
PROCESS_INFORMATION pi;
 
CreateProcess (NULL, "calc.exe", NULL, NULL, TRUE,CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi);
SetPriorityClass(pi.hProcess, IDLE_PRIORITY_CLASS);
 
DWORD pid = GetCurrentProcessId();
cout<<"The current process identifier="<<pid<<"\n";
 
DWORD tid[7];
for(int i=0;i<7;i++)
    tid[i];
 
 
DWORD dwThrdParam = 1;
HANDLE ht[7];
for(int i=0;i<7;i++)
ht[i];
 
 
hsem1=CreateSemaphore(NULL,1,1,"semaphore");
 
for(int i=0;i<7;i++)
ht[i]= CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)fproc,0,0,&tid[i]);
 
 
for(int i=0;i<7;i++)
WaitForSingleObject(ht[i], INFINITE);
 
 
cout <<a <<endl;
 
system("PAUSE");
 
return 0;
}
0
Aneron
159 / 158 / 25
Регистрация: 20.04.2010
Сообщений: 576
14.09.2011, 09:15 #4
так же можно было использовать мютексы и критические секции.
А в данном случае лучше подошли бы какие нить атомарные функции типо InterlockedIncrement/InterlockedDecrement
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.09.2011, 09:15
Привет! Вот еще темы с решениями:

Мьютексы, семафоры
Здравствуйте. Помогите пожалуйста, хочу найти примеры задач с использованием...

Потоки в windows и семафоры
Здравствуйте,помогите пожалуйста разобраться. Задание: Написать систему из...

Что такое семафоры?
сразу хочу показать ссылку...

Объекты синхронизации. мьютексы, семафоры
помогите пожалуйста. . Реализовать на семафоре мьютекс. Количественные...


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

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

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