Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2011, 15:47   #1
Skolos
Пользователь
 
Регистрация: 09.12.2011
Сообщений: 36
Восклицание Синхронизация потоков с использованием мьютексов.

Дано такое задание: Написати програму, що моделює обробний пристрій і чергу до нього. Потік, що імітує пристрій, одержує якесь завдання із загальної змінної (значення, що зберігається в змінній, може бути інтерпретоване як час виконання завдання). Після обробки завдання потік-пристрій повідомляє потоків-черги, що він вільний, при цьому потік-черга поміщає в змінну нове завдання. Для синхронізації потоків використати об'єкт синхронізації за допомогою мютексів.
Я решил его при помощи критических секций, но никак не могу решить при помощи мьютексов.
Вот недоделаный вариант. Погогите плз. Могу дать код с использованием КС.
Вложения
Тип файла: rar В8.rar (343.5 Кб, 9 просмотров)
Skolos вне форума Ответить с цитированием
Старый 09.12.2011, 15:56   #2
Skolos
Пользователь
 
Регистрация: 09.12.2011
Сообщений: 36
По умолчанию

Цитата:
Сообщение от Skolos Посмотреть сообщение
Дано такое задание: Написати програму, що моделює обробний пристрій і чергу до нього. Потік, що імітує пристрій, одержує якесь завдання із загальної змінної (значення, що зберігається в змінній, може бути інтерпретоване як час виконання завдання). Після обробки завдання потік-пристрій повідомляє потоків-черги, що він вільний, при цьому потік-черга поміщає в змінну нове завдання. Для синхронізації потоків використати об'єкт синхронізації за допомогою мютексів.
Я решил его при помощи критических секций, но никак не могу решить при помощи мьютексов.
Вот недоделаный вариант. Погогите плз. Могу дать код с использованием КС.
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Form1->Edit1->Text="1000";
Form1->Edit2->Text="1000";
Form1->Edit3->Text="1000";
Form1->Label2->Caption="В черзі";
Form1->Label3->Caption="В черзі";
Form1->Label4->Caption="В черзі";
}
//-----------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
hMutex=CreateMutex(NULL,FALSE,NULL) ;
WaitForSingleObject(hMutex,INFINITE );
hThread=CreateThread(NULL,
0,
(LPTHREAD_START_ROUTINE)ThreadFunc1 ,
&dwThrdParam,
0,
&dwThreadId);
if(hThread==NULL) ShowMessage("CreateThear failed");
else SetThreadPriority(hThread,THREAD_PR IORITY_NORMAL);
//////////
WaitForSingleObject(hMutex,INFINITE );
hThread=CreateThread(NULL,
0,
(LPTHREAD_START_ROUTINE)ThreadFunc2 ,
&dwThrdParam,
0,
&dwThreadId);
if(hThread==NULL) ShowMessage("CreateThear failed");
else SetThreadPriority(hThread,THREAD_PR IORITY_NORMAL);
//////////
WaitForSingleObject(hMutex,INFINITE );
hThread=CreateThread(NULL,
0,
(LPTHREAD_START_ROUTINE)ThreadFunc3 ,
&dwThrdParam,
0,
&dwThreadId);
if(hThread==NULL) ShowMessage("CreateThear failed");
else SetThreadPriority(hThread,THREAD_PR IORITY_NORMAL);
}
//--------------------------------------------------------
DWORD WINAPI ThreadFunc1(LPVOID lpParam)
{
WaitForSingleObject(hMutex,INFINITE );
Form1->Label2->Caption="Виконується";
Sleep(StrToInt(Form1->Edit1->Text));
Form1->Label2->Caption="Виконано";
ReleaseMutex(hMutex);
return 0;
}
DWORD WINAPI ThreadFunc2(LPVOID lpParam)
{
WaitForSingleObject(hMutex,INFINITE );
Form1->Label3->Caption="Виконується";
Sleep(StrToInt(Form1->Edit1->Text));
Form1->Label3->Caption="Виконано";
ReleaseMutex(hMutex);
return 0;
}
DWORD WINAPI ThreadFunc3(LPVOID lpParam)
{
WaitForSingleObject(hMutex,INFINITE );
Form1->Label4->Caption="Виконується";
Sleep(StrToInt(Form1->Edit1->Text));
Form1->Label4->Caption="Виконано";
ReleaseMutex(hMutex);
return 0;
}

это код.
Skolos вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Синхронизация потоков добрый_фей Помощь студентам 5 09.12.2011 19:57
Синхронизация потоков kardinal94 Общие вопросы Delphi 5 29.11.2010 21:13
Синхронизация потоков в С++ erazer89 Помощь студентам 0 27.04.2010 20:14
синхронизация потоков m_kostik Win Api 0 26.03.2010 23:56
Синхронизация потоков с использованием именованых каналов _Денис Помощь студентам 0 09.01.2010 16:58