powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / проблемы с WMI
3 сообщений из 28, страница 2 из 2
проблемы с WMI
    #38775383
vadipok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,


Код: coco
1.
2.
3.
4.
5.
6.
7.
8.
start threads for: 329
Request complited for 329 computers
stop threads
Insert Oracle
Insert Oracle Process
End insert Oracle Process
End insert Oracle
start threads for: 329



Получилось, спасибо. ИТишники народ жесткий, но зато доходчиво объясняют. ))
...
Рейтинг: 0 / 0
проблемы с WMI
    #38775421
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadipokНельзя его убирать, по задумке каждую минуту будет выполнятся сканирование всех компов.
Как я это по другому реализую как не циклы?
Через синхронизацию потоков.
Изучай
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
#include <stdio.h>
#include <process.h>
#include <windows.h>
#include <vector>

bool stop_all = false;

typedef struct
{
	char ip[20];
	HANDLE work;
	HANDLE free;
} arg_t;

unsigned __stdcall thread( void* pArguments )
{
	// Инициализация потока
	srand(GetTickCount());
	Sleep(rand() % 100); // эмуляция работы
	arg_t arg;
	memcpy(&arg, pArguments, sizeof(arg));
	printf("%d: Init thread %s\n", GetTickCount(), arg.ip);
	SetEvent(arg.free);
	// Выполнение расчетов
	while(WaitForSingleObject(arg.work, INFINITE) == WAIT_OBJECT_0 && !stop_all) {
		// Запрос данных
		Sleep(rand() % 1000); // эмуляция работы
		printf("%d: Query %s\n", GetTickCount(), arg.ip);
		// Запрос окончен
		SetEvent(arg.free);
	}
	// Завершение потока
	Sleep(rand() % 100); // эмуляция работы
	printf("%d: End thread %s\n", GetTickCount(), arg.ip);
	_endthreadex(0);
    return 0;
}

int main( void )
{
	// Создание потоков с ожиданием их инициализации
	std::vector<HANDLE> threads;
	std::vector<HANDLE> th_work;
	std::vector<HANDLE> th_free;
	for(int i = 0; i < 4; i++)
	{
		arg_t arg; // параметры запуска потока
		sprintf_s(arg.ip, sizeof(arg.ip), "192.168.0.%d", i);
		arg.work = CreateEvent(NULL, false, false, NULL);
		arg.free = CreateEvent(NULL, false, false, NULL);
		HANDLE th = (HANDLE) _beginthreadex(NULL, 0, &thread, (void *) &arg, 0, NULL);
		if(th == NULL) {
			printf("Error create thread %d\n", i);
			CloseHandle(th);
			CloseHandle(arg.work);
			CloseHandle(arg.free);
		} else {
			threads.push_back(th);
			if(WaitForSingleObject(arg.free, 1000) == WAIT_TIMEOUT) { // Ждем инициализацию потока 1000 мс.
				printf("Error init thread %d\n", i);
				CloseHandle(arg.free);
				CloseHandle(arg.work);
			} else {
				th_work.push_back(arg.work);
				th_free.push_back(arg.free);
			}
		}
	}
	// Выполнение полезной работы потоками 
	for(int n = 0; n < 3; n++) { // запускаем все 3 раза
		Sleep(1000 - GetTickCount() % 1000); // ждем начало секунды
		printf("%d: START\n", GetTickCount());
		for(int i = 0; i < th_work.size(); i++) {
			SetEvent(th_work[i]);
		}
		int res = WaitForMultipleObjects(th_free.size(), &th_free[0], true, INFINITE);
		printf("%d: END\n", GetTickCount());
	}
	// завершение потоков
	stop_all = true;
	for(int i = 0; i < th_work.size(); i++) {
		SetEvent(th_work[i]);
	}
	WaitForMultipleObjects(threads.size(), &threads[0], true, INFINITE);
	// Прибираем за собой
	for(int i = 0; i < th_work.size(); i++) {
		CloseHandle(th_work[i]);
	}
	th_work.clear();
	for(int i = 0; i < th_free.size(); i++) {
		CloseHandle(th_free[i]);
	}
	th_free.clear();
	for(int i = 0; i < threads.size(); i++) {
		CloseHandle(threads[i]);
	}
	threads.clear();
	system("pause");
}


...
Рейтинг: 0 / 0
проблемы с WMI
    #38775898
vadipok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо большое!
...
Рейтинг: 0 / 0
3 сообщений из 28, страница 2 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / проблемы с WMI
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]