Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // TheadsAhzh.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
- //
- // ThreadsAnzh.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
- //
- #define _CRT_SECURE_NO_WARNINGS
- #include <windows.h>
- #include <iostream>
- #include <thread>
- #include <ctime>
- #include <cstdlib>
- #include <stdio.h>
- #include <string.h>
- using namespace std;
- void sortQuick(int* mas, int fir1, int tail)
- {
- int mid, count;
- int t = fir1, end = tail;
- mid = mas[(t + end) / 2];
- do
- {
- while (mas[t] < mid) t++;
- while (mas[end] > mid) end--;
- if (t <= end)
- {
- count = mas[t];
- mas[t] = mas[end];
- mas[end] = count;
- t++;
- end--;
- }
- } while (t < end);
- if (fir1 < end) sortQuick(mas, fir1, end);
- if (t < tail) sortQuick(mas, t, tail);
- }
- int* makeARR(int* arr, int ArrElements) {
- int k = 0;
- while (k < ArrElements) {
- arr[k] = (rand() % 10000) + 1;
- k = k + 1;
- }
- return arr;
- }
- void printMASSIV(int* arr3, int n) {
- int i = 0;
- while (i < n) {
- cout << "i" << i << " " << arr3[i] << endl;
- i = i + 1;
- }
- }
- int* argThead[2];
- DWORD WINAPI ThreadPrint(LPVOID lpParam) {
- cout << "ThreadPrint" << endl;
- printMASSIV(argThead[0], *argThead[1]);
- cout << "ThreadPrint stop" << endl;
- return 0;
- }
- void Thread_Print(int* argThead, int Npriority) {
- HANDLE hThread_mass_print;
- DWORD ThreadIDp;
- hThread_mass_print = CreateThread(
- NULL,
- 0,
- ThreadPrint,
- argThead
- ,
- CREATE_SUSPENDED,
- &ThreadIDp
- );
- if (hThread_mass_print == NULL) {
- cout << "Thread failed" << GetLastError() << endl;
- }
- SetThreadPriority(hThread_mass_print, Npriority);
- cout << "PriorytetP hThread_mass_print = " << GetThreadPriority(hThread_mass_print) << endl;
- cout << "Thread Creation Success" << endl;
- ResumeThread(hThread_mass_print);
- cout << "ThreadID -->" << ThreadIDp << endl;
- }
- DWORD WINAPI ThreadSort(LPVOID lpParam) {
- cout << "ThreadSort" << endl;
- sortQuick(argThead[0], 0, *argThead[1] - 1);
- cout << "ThreadSort stop" << endl;
- return 0;
- }
- void Thread_Sort(int* argThead, int Npriority) {
- HANDLE hThread_mass_sort;
- DWORD ThreadIDs;
- hThread_mass_sort = CreateThread(
- NULL,
- 0,
- ThreadSort,
- argThead
- ,
- CREATE_SUSPENDED,
- &ThreadIDs
- );
- if (hThread_mass_sort == NULL) {
- cout << "Thread failed" << GetLastError() << endl;
- }
- SetThreadPriority(hThread_mass_sort, Npriority);//
- cout << "PriorytetS hThread_mass_sort = " << GetThreadPriority(hThread_mass_sort) << endl;//
- cout << "Thread Creation Success" << endl;
- ResumeThread(hThread_mass_sort);//
- cout << "ThreadID -->" << ThreadIDs << endl;
- }
- int main()
- {
- int ArrElements = 102;
- int* arr = new int[ArrElements];
- makeARR(arr, ArrElements);
- argThead[0] = arr;
- argThead[1] = &ArrElements;
- Thread_Sort(*argThead, 0);
- Thread_Print(*argThead, 31);
- Sleep(1000);
- return 0;
- }
- // Запуск программы: CTRL+F5 или меню "Отладка" > "Запуск без отладки"
- // Отладка программы: F5 или меню "Отладка" > "Запустить отладку"
- // Советы по началу работы
- // 1. В окне обозревателя решений можно добавлять файлы и управлять ими.
- // 2. В окне Team Explorer можно подключиться к системе управления версиями.
- // 3. В окне "Выходные данные" можно просматривать выходные данные сборки и другие сообщения.
- // 4. В окне "Список ошибок" можно просматривать ошибки.
- // 5. Последовательно выберите пункты меню "Проект" > "Добавить новый элемент", чтобы создать файлы кода, или "Проект" > "Добавить существующий элемент", чтобы добавить в проект существующие файлы кода.
- // 6. Чтобы снова открыть этот проект позже, выберите пункты меню "Файл" > "Открыть" > "Проект" и выберите SLN-файл.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement