Exemplo n.º 1
0
DWORD WINAPI WriteToFiles(LPVOID lp)
{
	EnterCriticalSection(&cs);
	ofstream out(TEXT("init.txt"));
	if (!out.is_open())
	{
		MessageAboutError(GetLastError());
		return 1;
	}

	out << "30.10.1991\n";
	LeaveCriticalSection(&cs);

	TCHAR file_name[16];
	for (int i = 0; i < N; ++i)
	{
		EnterCriticalSection(&cs);
		wsprintf(file_name, TEXT("copy_%d.txt"), i + 1);
		CopyFile(TEXT("init.txt"), file_name, FALSE);
		ofstream current_out(file_name);
		current_out << "Copy # " << i + 1 << ": 30.10.1991\n";
		current_out.close();
		Sync::helper(1);
		LeaveCriticalSection(&cs);
	}

	out.close();
	MessageBox(0, TEXT("Поток записи завершил работу"), TEXT("Критическая секция"), MB_OK);

	return 0;
}
Exemplo n.º 2
0
void CMyDialog::OnCommand(WPARAM wp, LPARAM lp)
{
	if (LOWORD(wp) == IDC_BUTTON1)
	{
		MessageInfo("Hello from DLL");
		if (!__FUnloadDelayLoadedDLL2("implicit_linking.dll"))
		{
			MessageAboutError(GetLastError());
			return;
		}
		MessageInfo("Hello from DLL");
	}
}
Exemplo n.º 3
0
DWORD WINAPI ReadFromFiles(LPVOID lp)
{
	EnterCriticalSection(&cs);
	ofstream result(TEXT("result.txt"));
	if (!result.is_open())
	{
		MessageAboutError(GetLastError());
		return 1;
	}
	LeaveCriticalSection(&cs);

	TCHAR file_name[16];
	char buffer[32];
	for (int i = 0; i < N; ++i)
	{
		EnterCriticalSection(&cs);
		wsprintf(file_name, TEXT("copy_%d.txt"), i + 1);
		ifstream current_in;
		current_in.open(file_name);
		while (!current_in.is_open())
		{
			LeaveCriticalSection(&cs);
			EnterCriticalSection(&cs);
			current_in.open(file_name);
		}
		current_in.getline(buffer, 32);
		result << buffer << endl;
		current_in.close();
		Sync::helper(0);
		LeaveCriticalSection(&cs);
	}

	result.close();
	MessageBox(0, TEXT("Поток чтения завершил работу"), TEXT("Критическая секция"), MB_OK);

	return 0;
}