Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2019
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.28 KB | None | 0 0
  1.  
  2. #include <windows.h>
  3. #include <stdlib.h>
  4. #include <iostream>
  5. #include <fstream>
  6. #include <stdio.h>
  7. #include <conio.h>
  8. using namespace std;
  9.  
  10. HANDLE Threads[2], sem, hFile, hMapping; // дескрипторы файла и объекта отображения;
  11. char file_name[] = "input.txt";
  12. int k = 0;
  13. int *ptr, mas[5]; // для указателя на массив
  14. void Foo();
  15. HANDLE reh(HANDLE &hFi)
  16. {
  17. TCHAR t[15] = TEXT("input.txt");
  18. hFi = CreateFile(t, GENERIC_READ | GENERIC_WRITE,
  19. 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
  20. return hFi;
  21. }
  22.  
  23. int ThreadProc1()
  24. {
  25. Foo();
  26.  
  27.  
  28. // CloseHandle(hFile);
  29.  
  30.  
  31. ReleaseSemaphore(sem, 1, NULL);
  32. return 0;
  33.  
  34. }
  35.  
  36. DWORD WINAPI ThreadProc2()
  37. {
  38. WaitForSingleObject(Threads[0], INFINITE);
  39.  
  40. hFile = CreateFile(L"input1.txt", GENERIC_READ | GENERIC_WRITE,
  41. 0, NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL);
  42. for (int i = 0; i < 5; i++)
  43. WriteFile(hFile, (char*)&mas[i], sizeof(char*), NULL, NULL);
  44.  
  45. hFile = CreateFile(L"input1.txt", GENERIC_READ | GENERIC_WRITE,
  46. 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
  47.  
  48.  
  49. while (!hMapping)
  50. {
  51.  
  52. hMapping = CreateFileMapping(
  53. hFile, // дескриптор открытого файла
  54. NULL, // атрибуты защиты по умолчанию
  55. PAGE_READWRITE, // режим доступа
  56. 0, 0, // размер объекта отображения равен размеру файла
  57. NULL); // имя не используем
  58. }
  59.  
  60.  
  61. if (!hMapping)
  62. {
  63. cerr << "Create file mapping failed." << endl;
  64. }
  65. // создаем вид файла
  66. ptr = (int*)MapViewOfFile(
  67. hMapping, // дескриптор объекта отображения
  68. FILE_MAP_WRITE, // режим доступа к виду
  69. 0, 0, // отображаем файл с начала
  70. 0); // отображаем весь файл
  71. CloseHandle(hFile);
  72. for (int i = 4; i >= 0; i--)
  73. cout << ptr[i] << " ";
  74. cout << "\n";
  75. cout << "Вы хотите продолжить работу?\n0 - Нет\n1 - Да\n";
  76. cin >> k;
  77. if (k != 0 && k != 1)
  78. {
  79. cout << "Вы ввели неправильное число\n";
  80. exit(1);
  81. }
  82. ReleaseSemaphore(sem, 1, NULL);
  83. return 0;
  84.  
  85. }
  86. void Work()
  87. {
  88. sem = CreateSemaphore(NULL, 1, 2, (LPCWSTR)"semaphor");
  89. Threads[0] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadProc1, 0, 0, NULL);
  90. Threads[1] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadProc2, 0, 0, NULL);
  91. WaitForMultipleObjects(2, Threads, TRUE, INFINITE);
  92. CloseHandle(Threads[1]);
  93. if (k == 0)
  94. {
  95. exit(0);
  96. }
  97. if (k == 1)
  98. {
  99. Work();
  100. }
  101. }
  102.  
  103. void Foo()
  104. {
  105.  
  106. fstream fout = fstream(file_name, ios::out | ios::binary);
  107. if (fout.good())
  108. {
  109. cout << "Введите числа:\n";
  110. for (int i = 0; i < 5; i++)
  111. {
  112. cin >> mas[i];
  113. fout.write((char*)&mas[i], sizeof(int));
  114. }
  115. fout.close();
  116.  
  117. }
  118. else
  119. {
  120. cerr << "File don't created AAAAAAAAA " << file_name << endl;
  121. return;
  122. }
  123.  
  124. }
  125.  
  126. int main()
  127. {
  128. setlocale(0, "Rus");
  129. //Foo();
  130. Work();
  131. /*sem = CreateSemaphore(NULL, 1, 2, (LPCWSTR)"semaphor");
  132. Threads[0] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadProc1, 0, 0, NULL);
  133. Threads[1] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadProc2, 0, 0, NULL);
  134. */
  135. return 0;
  136.  
  137. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement