Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++: WinAPI
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Watros
3 / 3 / 2
Регистрация: 12.09.2010
Сообщений: 40
1

Синхронизация потоков

24.05.2012, 20:13. Просмотров 768. Ответов 1
Метки нет (Все метки)

Помогите обеспечить синхронизацию потоков
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
const int j=20; 
 
hSemaphore = CreateSemaphore(NULL, 0, 1, NULL); 
 
DWORD __stdcall Process(LPVOID) 
{ 
int t; 
WaitForSingleObject(hSemaphore, INFINITE); 
t = j*j; 
ReleaseSemaphore(hSemaphore); 
 
return 0; 
} 
void main() 
{ 
HANDLE hT[2]; 
for (int t=0; t<2; t++) 
hT[t] = CreateThread(NULL, 0, Process, NULL, 0, NULL); 
return; }
хз что передавать ReleaseSemaphore, там надо ещё

__in LONG lReleaseCount,
__out_opt LPLONG lpPreviousCount

Добавлено через 6 часов 23 минуты
Вроде разобрался.
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 "stdafx.h"
#include <windows.h>
 
const int j = 20;
 
HANDLE hSemaphore = CreateSemaphore(NULL, 1, 1, NULL);
 
DWORD __stdcall Process(LPVOID)
{
int t;
WaitForSingleObject(hSemaphore, INFINITE);
t = j * j;
ReleaseSemaphore(hSemaphore, 1, NULL);
return t;
}
 
void main()
{ 
 HANDLE hT[2]; 
 for (int t = 0; t < 2; t++) 
 hT[t] = CreateThread(NULL, 0, Process, NULL, 0, NULL);
 WaitForMultipleObjects(2, hT, TRUE, INFINITE); 
 return; 
}
Только теперь в выдает:

Не по теме:

"Threads.exe": Загружено: "D:\Projects\8\Release\Threads.exe", Символы загружены.
"Threads.exe": Загружено: "C:\Windows\System32\ntdll.dll", Невозможно найти или открыть файл PDB
"Threads.exe": Загружено: "C:\Windows\System32\kernel32.dll", Невозможно найти или открыть файл PDB
"Threads.exe": Загружено: "C:\Windows\System32\KernelBase.dll", Невозможно найти или открыть файл PDB
"Threads.exe": Загружено: "C:\Windows\System32\mfc100u.dll", Невозможно найти или открыть файл PDB
"Threads.exe": Загружено: "C:\Windows\System32\msvcr100.dll", Невозможно найти или открыть файл PDB
"Threads.exe": Загружено: "C:\Windows\System32\user32.dll", Невозможно найти или открыть файл PDB
"Threads.exe": Загружено: "C:\Windows\System32\gdi32.dll", Невозможно найти или открыть файл PDB
"Threads.exe": Загружено: "C:\Windows\System32\lpk.dll", Невозможно найти или открыть файл PDB
"Threads.exe": Загружено: "C:\Windows\System32\usp10.dll", Невозможно найти или открыть файл PDB
"Threads.exe": Загружено: "C:\Windows\System32\msvcrt.dll", Невозможно найти или открыть файл PDB
"Threads.exe": Загружено: "C:\Windows\System32\shlwapi.dll", Невозможно найти или открыть файл PDB
"Threads.exe": Загружено: "C:\Windows\winsxs\x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.7601.17514_none_ec83dffa859149af\comctl32.dll", Невозможно найти или открыть файл PDB
"Threads.exe": Загружено: "C:\Windows\System32\advapi32.dll", Невозможно найти или открыть файл PDB
"Threads.exe": Загружено: "C:\Windows\System32\sechost.dll", Невозможно найти или открыть файл PDB
"Threads.exe": Загружено: "C:\Windows\System32\rpcrt4.dll", Невозможно найти или открыть файл PDB
"Threads.exe": Загружено: "C:\Windows\System32\msimg32.dll", Невозможно найти или открыть файл PDB
"Threads.exe": Загружено: "C:\Windows\System32\imm32.dll", Невозможно найти или открыть файл PDB
"Threads.exe": Загружено: "C:\Windows\System32\msctf.dll", Невозможно найти или открыть файл PDB
"Threads.exe": Загружено: "C:\Windows\System32\uxtheme.dll", Невозможно найти или открыть файл PDB
"Threads.exe": Загружено: "C:\Windows\System32\dwmapi.dll", Невозможно найти или открыть файл PDB
"Threads.exe": Загружено: "C:\Windows\System32\mfc100rus.dll", Двоичный код не был построен с отладочной информацией.
Поток 'Поток Win32' (0x1804) завершился с кодом 0 (0x0).
Поток 'Поток Win32' (0x13fc) завершился с кодом 0 (0x0).
Программа "[4704] Threads.exe: Машинный код" завершилась с кодом 0 (0x0).

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.05.2012, 20:13
Ответы с готовыми решениями:

Синхронизация потоков
Здравствуйте. Подскажите пожалуйста. У меня есть три потока. Мне нужно чтобы...

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

Синхронизация потоков
Помогите синхронизировать два потока на Win32 Api. 1й выводит числовую...

Синхронизация потоков
в общем есть код: DWORD WINAPI...

Синхронизация потоков
Нужно: Выполнение нескольких арифметических операций разного приоритета....

1
Subrealist
149 / 46 / 3
Регистрация: 28.05.2012
Сообщений: 115
29.05.2012, 01:12 2
Про синхронизацию потоков при помощи WinAPI хорошо рассказано в книге Рихтера "Windows для профессионалов".
И над примером вам надо как-то поработать, чтобы потоки что-то наглядное делали, а то как определить, что синхронизация удалась.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.05.2012, 01:12

Синхронизация потоков
Вот код: #include &quot;iostream&quot; #include &quot;windows.h&quot; using namespace std; ...

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

Синхронизация потоков
Как переделать с использованием mutex или еще чего нибудь? /*Три нити....


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

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

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