Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // master.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
- //
- #define _CRT_SECURE_NO_WARNINGS
- #include <windows.h>
- #include <iostream>
- #include <thread>
- #include <cstdlib>
- #include <stdio.h>
- #include <string.h>
- #include <ctime>
- using namespace std;
- class GETtime
- {
- public:
- int sec_t;
- int MSCostatok;
- int One_Step;
- int min_t;
- int milisecTotal;
- void strtT()
- {
- tStart = std::chrono::high_resolution_clock::now();
- chrono::duration<float> strtT = tStart - tStart;
- cout << "strtT: " << strtT.count() << endl;
- }
- void endT()
- {
- tEnd = std::chrono::high_resolution_clock::now();
- chrono::duration<float> duration = (tEnd - tStart) * 1000;
- GETtime::milisecTotal = duration.count();
- GETtime::min_t = (duration.count() / 1000 / 60);
- GETtime::sec_t = int(duration.count() / 1000) % 60;
- GETtime::MSCostatok = int(duration.count()) - min_t * 60 * 1000 - sec_t * 1000;
- chrono::duration<float> strtT = tStart - tStart;
- cout << "tEnd: " << duration.count() << endl;
- cout << "minut: " << GETtime::min_t << " sekund: " << GETtime::sec_t << " milisekund " << GETtime::MSCostatok << endl;
- }
- void print_Iteration() {
- cout << " Секунд за 1 итерацию: " << GETtime::milisecTotal / One_Step << endl;
- }
- private:
- std::chrono::time_point<std::chrono::steady_clock> tStart, tEnd;
- };
- LPWSTR FormatToWIN32(char in[], wchar_t format[128]) {
- mbstowcs(format, in, strlen(in) + 1);
- LPWSTR NewFormat = format;
- return NewFormat;
- }
- void titleSet(char a[]) {
- wchar_t wtext2[128];
- LPWSTR ptr2 = FormatToWIN32(a, wtext2);
- SetConsoleTitle(ptr2);
- }
- void InToCmd(char* cmd, char* arg) {
- sprintf(cmd + strlen(cmd), " %s", arg);
- }
- void prioryty1(char Process[128]) {
- //
- char cmd[128];
- strcpy(cmd, "sort.exe");
- char Prioritet[128] = "IDLE_PRIORITY_CLASS";
- char cmd2[128];
- wchar_t wtext2[128];
- strcpy(cmd2, cmd);
- InToCmd(cmd2, Process);
- InToCmd(cmd2, Prioritet);
- LPWSTR cmdPtr = FormatToWIN32(cmd2, wtext2);
- STARTUPINFO info;
- memset(&info, 0, sizeof(info));
- info.cb = sizeof(info);
- //HANDLE hEvent;
- PROCESS_INFORMATION pinfo;
- if (!CreateProcess(NULL, cmdPtr, NULL, NULL, FALSE, IDLE_PRIORITY_CLASS | CREATE_NEW_CONSOLE,
- NULL, NULL, &info, &pinfo)) {
- cout << "Master: Slave protsess ne zapushchen!!!!!!!!!!!!!\n";
- cout << "Master: проверьте правильность указания имени процесса в коммандной строке";
- }
- HANDLE process = OpenProcess(PROCESS_QUERY_INFORMATION | SYNCHRONIZE,
- FALSE, pinfo.dwProcessId);
- if (!process) cout << " Oshibka otkrytiay protsessa Sort\n";
- if (WaitForSingleObject(process, INFINITE) == STATUS_WAIT_0)
- {
- cout << Process << " ------------zavershil rabotu------------\n";
- //cin.get();
- }
- }
- void prioryty2(char Process[128]) {
- //
- char cmd[128];
- strcpy(cmd, "sort.exe");
- char Prioritet[128] = "NORMAL_PRIORITY_CLASS";
- char cmd2[128];
- wchar_t wtext2[128];
- strcpy(cmd2, cmd);
- InToCmd(cmd2, Process);
- InToCmd(cmd2, Prioritet);
- cout << "Master: Start ___ " << cmd2 << " ___" << "\n";
- LPWSTR cmdPtr = FormatToWIN32(cmd2, wtext2);
- STARTUPINFO info;
- memset(&info, 0, sizeof(info));
- info.cb = sizeof(info);
- //HANDLE hEvent;
- PROCESS_INFORMATION pinfo;
- if (!CreateProcess(NULL, cmdPtr, NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS | CREATE_NEW_CONSOLE,
- NULL, NULL, &info, &pinfo)) {
- cout << "Master: Slave protsess ne zapushchen!!!!!!!!!!!!!\n";
- cout << "Master: проверьте правильность указания имени процесса в коммандной строке";
- }
- HANDLE process = OpenProcess(PROCESS_QUERY_INFORMATION | SYNCHRONIZE,
- FALSE, pinfo.dwProcessId);
- if (!process) cout << " Oshibka otkrytiay protsessa Sort\n";
- if (WaitForSingleObject(process, INFINITE) == STATUS_WAIT_0)
- {
- cout << Process << " ------------zavershil rabotu------------\n";
- //cin.get();
- }
- }
- void prioryty3(char Process[128]) {
- char cmd[128];
- strcpy(cmd, "sort.exe");
- char Prioritet[128] = "HIGH_PRIORITY_CLASS";
- char cmd2[128];
- wchar_t wtext2[128];
- strcpy(cmd2, cmd);
- InToCmd(cmd2, Process);
- InToCmd(cmd2, Prioritet);
- cout << "Master: Start ___ " << cmd2 << " ___" << "\n";
- LPWSTR cmdPtr = FormatToWIN32(cmd2, wtext2);
- STARTUPINFO info;
- memset(&info, 0, sizeof(info));
- info.cb = sizeof(info);
- PROCESS_INFORMATION pinfo;
- if (!CreateProcess(NULL, cmdPtr, NULL, NULL, FALSE, HIGH_PRIORITY_CLASS | CREATE_NEW_CONSOLE,
- NULL, NULL, &info, &pinfo)) {
- cout << "Master: Slave protsess ne zapushchen!!!!!!!!!!!!!\n";
- cout << "Master: проверьте правильность указания имени процесса в коммандной строке";
- }
- HANDLE process = OpenProcess(PROCESS_QUERY_INFORMATION | SYNCHRONIZE,
- FALSE, pinfo.dwProcessId);
- if (!process) cout << " Oshibka otkrytiay protsessa Sort\n";
- if (WaitForSingleObject(process, INFINITE) == STATUS_WAIT_0)
- {
- cout << Process << " ------------zavershil rabotu------------\n";
- }
- }
- int main(int argc, char* argv[]) {
- char cmd[128];
- if (argc != 1) strcpy(cmd, argv[1]);
- else strcpy(cmd, "sort.exe");
- char title[128] = "masterAnzh";
- wchar_t wtext2[128];
- LPWSTR pp = FormatToWIN32(title, wtext2);
- SetConsoleTitle(pp);
- char Process1[128] = "Process1";
- char Process2[128] = "Process2";
- GETtime timeProcess;
- timeProcess.strtT();
- prioryty1(Process1);prioryty3(Process2);
- prioryty1(Process1); prioryty1(Process2);
- prioryty2(Process1); prioryty1(Process2);
- timeProcess.endT();
- cout << "Master: Sleeping\n";
- Sleep(3000);
- cout << "Master: EXIT\n";
- cin.get();
- return 0;
- }
- // Запуск программы: CTRL+F5 или меню "Отладка" > "Запуск без отладки"
- // Отладка программы: F5 или меню "Отладка" > "Запустить отладку"
- // Советы по началу работы
- // 1. В окне обозревателя решений можно добавлять файлы и управлять ими.
- // 2. В окне Team Explorer можно подключиться к системе управления версиями.
- // 3. В окне "Выходные данные" можно просматривать выходные данные сборки и другие сообщения.
- // 4. В окне "Список ошибок" можно просматривать ошибки.
- // 5. Последовательно выберите пункты меню "Проект" > "Добавить новый элемент", чтобы создать файлы кода, или "Проект" > "Добавить существующий элемент", чтобы добавить в проект существующие файлы кода.
- // 6. Чтобы снова открыть этот проект позже, выберите пункты меню "Файл" > "Открыть" > "Проект" и выберите SLN-файл.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement