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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 92, средняя оценка - 4.62
lexatigr
0 / 0 / 0
Регистрация: 16.12.2010
Сообщений: 76
#1

Мьютексы, семафоры - C++

02.01.2012, 14:57. Просмотров 13355. Ответов 2
Метки нет (Все метки)

Здравствуйте.
Помогите пожалуйста, хочу найти примеры задач с использованием мьютексов, семафоров, потоков.
А то надо решить задачу, вроде все делаю по шаблону, а не работает.
0
Миниатюры
Мьютексы, семафоры  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.01.2012, 14:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Мьютексы, семафоры (C++):

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

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

Мьютексы - C++
Здравствуйте.. У Меня задача синхронизовать потоки,которые "делят "между собой какой-нибудь ресурс. Допустим проходят массив от 0 -10. ...

Семафоры - C++
Здравствуйте. Как можно организовать синхронизацию двух программ, которые обращаются к одной разделяемой памяти с помощью семафоров. Мне...

Семафоры - C++
Помогите решить задачу. Есть пример, но делаю по аналогии не получается. #include <cstdlib> #include <iostream> #include...

Семафоры(7 потоков) - C++
Требуется создать программу которая будет создавать 7 потоков и в каждом выполнять операцию а=а-1(изначально установить а=10). Доя решение...

2
Gepar
1177 / 533 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
02.01.2012, 15:36 #2
Почитайте в вики что такое семафор и как его используют, потом посмотрите мой пример (просто код моей лабораторной, у меня под WINAPI было банально хоть что-то сделать с семафором, для линукса там было поинтереснее, но несмотря на всю схожесть код всё же немного будет отличаться так что те примеры не привожу).
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
#include <iostream>
#include <string>
#include <windows.h>
#include <process.h>
using namespace std;
 
string someString;
HANDLE m_hSemaphore; // Семафор для учета элементов очереди
 
unsigned __stdcall ReadFunc( void * arg)
{
    WaitForSingleObject(m_hSemaphore,INFINITE);
        cout<<"\nЯ тред 1 и я запустился потому что тред 2 изменил значение семафора.\nЗначение что было введено в треде 2:"<<someString<<"\n";
}
 
unsigned __stdcall WriteFunc( void * arg)
{
    cout<<"Я тред 2, введите какой-то текст:";
    cin>>someString;
    ReleaseSemaphore(m_hSemaphore,1, NULL); // Увеличиваем счетчик семафора на 1.
}
 
 
int main()
{
     SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    m_hSemaphore = CreateSemaphore(NULL, 0, 1000, NULL);    //начальное значение счетчика = 0
    unsigned uThreadIDs[2];
    HANDLE hThreads[2];
    hThreads[0] = (HANDLE)_beginthreadex( NULL, 0, &ReadFunc, NULL, 0,&uThreadIDs[0]);
    hThreads[1] = (HANDLE)_beginthreadex( NULL, 0, &WriteFunc, NULL, 0,&uThreadIDs[1]);
 
    WaitForMultipleObjects(2, hThreads, TRUE, INFINITE ); // без тайм-аута
    CloseHandle( m_hSemaphore);
    CloseHandle( hThreads[0] );
    CloseHandle( hThreads[1] );
    return 0;
}
Думаю дальше вам будет понятно как реализовать ваше задание.
1
lexatigr
0 / 0 / 0
Регистрация: 16.12.2010
Сообщений: 76
02.01.2012, 15:42  [ТС] #3
Спасибо огромное. Буду разбираться

Добавлено через 2 минуты
Gepar, спасибо огромное.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.01.2012, 15:42
Привет! Вот еще темы с ответами:

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

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

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

Семафоры - можно ли считать ноль положительным числом? - C++
подскажите 1. sem_wait(sem_t* sem); – «ожидание на семафоре». Выполнение потока блокируется до тех пор, пока значение семафора не станет...


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

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

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