Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <windows.h>
- #include <stdlib.h>
- #include <iostream>
- #include <fstream>
- #include <stdio.h>
- #include <conio.h>
- using namespace std;
- HANDLE Threads[2], sem, hFile, hMapping; // дескрипторы файла и объекта отображения;
- char file_name[] = "input.txt";
- int k = 0;
- int *ptr, mas[5]; // для указателя на массив
- void Foo();
- HANDLE reh(HANDLE &hFi)
- {
- TCHAR t[15] = TEXT("input.txt");
- hFi = CreateFile(t, GENERIC_READ | GENERIC_WRITE,
- 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
- return hFi;
- }
- int ThreadProc1()
- {
- Foo();
- // CloseHandle(hFile);
- ReleaseSemaphore(sem, 1, NULL);
- return 0;
- }
- DWORD WINAPI ThreadProc2()
- {
- WaitForSingleObject(Threads[0], INFINITE);
- hFile = CreateFile(L"input1.txt", GENERIC_READ | GENERIC_WRITE,
- 0, NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL);
- for (int i = 0; i < 5; i++)
- WriteFile(hFile, (char*)&mas[i], sizeof(char*), NULL, NULL);
- hFile = CreateFile(L"input1.txt", GENERIC_READ | GENERIC_WRITE,
- 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
- while (!hMapping)
- {
- hMapping = CreateFileMapping(
- hFile, // дескриптор открытого файла
- NULL, // атрибуты защиты по умолчанию
- PAGE_READWRITE, // режим доступа
- 0, 0, // размер объекта отображения равен размеру файла
- NULL); // имя не используем
- }
- if (!hMapping)
- {
- cerr << "Create file mapping failed." << endl;
- }
- // создаем вид файла
- ptr = (int*)MapViewOfFile(
- hMapping, // дескриптор объекта отображения
- FILE_MAP_WRITE, // режим доступа к виду
- 0, 0, // отображаем файл с начала
- 0); // отображаем весь файл
- CloseHandle(hFile);
- for (int i = 4; i >= 0; i--)
- cout << ptr[i] << " ";
- cout << "\n";
- cout << "Вы хотите продолжить работу?\n0 - Нет\n1 - Да\n";
- cin >> k;
- if (k != 0 && k != 1)
- {
- cout << "Вы ввели неправильное число\n";
- exit(1);
- }
- ReleaseSemaphore(sem, 1, NULL);
- return 0;
- }
- void Work()
- {
- sem = CreateSemaphore(NULL, 1, 2, (LPCWSTR)"semaphor");
- Threads[0] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadProc1, 0, 0, NULL);
- Threads[1] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadProc2, 0, 0, NULL);
- WaitForMultipleObjects(2, Threads, TRUE, INFINITE);
- CloseHandle(Threads[1]);
- if (k == 0)
- {
- exit(0);
- }
- if (k == 1)
- {
- Work();
- }
- }
- void Foo()
- {
- fstream fout = fstream(file_name, ios::out | ios::binary);
- if (fout.good())
- {
- cout << "Введите числа:\n";
- for (int i = 0; i < 5; i++)
- {
- cin >> mas[i];
- fout.write((char*)&mas[i], sizeof(int));
- }
- fout.close();
- }
- else
- {
- cerr << "File don't created AAAAAAAAA " << file_name << endl;
- return;
- }
- }
- int main()
- {
- setlocale(0, "Rus");
- //Foo();
- Work();
- /*sem = CreateSemaphore(NULL, 1, 2, (LPCWSTR)"semaphor");
- Threads[0] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadProc1, 0, 0, NULL);
- Threads[1] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadProc2, 0, 0, NULL);
- */
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement