Другие языки программирования и технологии
Программирование на С
Напишите программу на C, которая создает случайное число дочерних процессов. Каждый дочерний процесс создает другое случайное число процессов, которые будут спать в течение произвольного количества секунд (от 1 до 10), а затем умирают. Имейте ввиду, что каждый соответствующий родитель умрет только тогда, когда все дети умрут.
#include
#include
#include
#include
/* This function acts as the 'main' function for each new thread.
static void threadMain(void *arg) */
{
printf("Thread %2d has an ID of %u\n", (int)arg, GetCurrentThreadId());
_endthread();
}
int main(void)
{
#define NTHREADS 25
HANDLE hThreads[NTHREADS];
int i;
// Create NTHREADS inheritable threads that are initially
// suspended and that will run starting at threadMain().
// at threadMain().
for (i = 0; i < NTHREADS; i++)
{
SECURITY_ATTRIBUTES sa =
{
sizeof(SECURITY_ATTRIBUTES), // structure size
0, // No security descriptor
TRUE, // Thread handle is inheritable
};
DWORD threadId;
hThreads[i] = (HANDLE)_beginthreadNT(
threadMain, // Thread starting address
4096, // Thread stack size
(void *)i, // Thread start argument
&sa, // Thread security
CREATE_SUSPENDED, // Create in suspended state
&threadId); // Thread ID.
if (hThreads[i] == INVALID_HANDLE_VALUE)
{
MessageBox(0, "Thread Creation Failed", "Error", MB_OK);
return 1;
}
printf("Created thread %2d with an ID of %u\n", i, threadId);
}
printf("\nPress a key to thaw all threads\n\n");
getch();
// Resume the suspended threads.
for (i = 0; i < NTHREADS; i++)
ResumeThread(hThreads[i]);
// Wait for all threads to finish execution.
WaitForMultipleObjects(NTHREADS, // Number of objects to wait for
hThreads, // The objects to wait for
TRUE, // Wait for all objects
INFINITE); // No timeout
// Close all of the thread handles.
for (i = 0; i < NTHREADS; i++)
CloseHandle(hThreads[i]);
return 0;
}
#include
#include
#include
/* This function acts as the 'main' function for each new thread.
static void threadMain(void *arg) */
{
printf("Thread %2d has an ID of %u\n", (int)arg, GetCurrentThreadId());
_endthread();
}
int main(void)
{
#define NTHREADS 25
HANDLE hThreads[NTHREADS];
int i;
// Create NTHREADS inheritable threads that are initially
// suspended and that will run starting at threadMain().
// at threadMain().
for (i = 0; i < NTHREADS; i++)
{
SECURITY_ATTRIBUTES sa =
{
sizeof(SECURITY_ATTRIBUTES), // structure size
0, // No security descriptor
TRUE, // Thread handle is inheritable
};
DWORD threadId;
hThreads[i] = (HANDLE)_beginthreadNT(
threadMain, // Thread starting address
4096, // Thread stack size
(void *)i, // Thread start argument
&sa, // Thread security
CREATE_SUSPENDED, // Create in suspended state
&threadId); // Thread ID.
if (hThreads[i] == INVALID_HANDLE_VALUE)
{
MessageBox(0, "Thread Creation Failed", "Error", MB_OK);
return 1;
}
printf("Created thread %2d with an ID of %u\n", i, threadId);
}
printf("\nPress a key to thaw all threads\n\n");
getch();
// Resume the suspended threads.
for (i = 0; i < NTHREADS; i++)
ResumeThread(hThreads[i]);
// Wait for all threads to finish execution.
WaitForMultipleObjects(NTHREADS, // Number of objects to wait for
hThreads, // The objects to wait for
TRUE, // Wait for all objects
INFINITE); // No timeout
// Close all of the thread handles.
for (i = 0; i < NTHREADS; i++)
CloseHandle(hThreads[i]);
return 0;
}
Похожие вопросы
- Конец объектно-ориентированному программированию? Переходим от “черных” ящиков к ”белым” и ”прозрачным” ящикам?
- А какие языки программирования изучали в 80х и на чём вы их изучали?
- ОК. Куда, мать его, поступать-то? Или как я стал ненавидеть программирование
- Основы для программирования
- Вопрос для тех, кто уже опытный и профессиональный специалист в сфере программирования, web-программирования, дизайн!..
- Web программирование
- Какой язык программирования выбрать для изучения для начинающего ? (внутри)
- Помогите пожалуйста разобраться с вопросами по информатике и программированию
- Что является 'сущностью' в программировании для Вас?
- С чего начать учение программированию? С каких языков программирования лучше начинать учиться программированию?
И да, возможно я чего-то подзабыл, но, как мне кажется, для создания процесса используется функция из семейства CreateProcess, а в вашем коде создаются потоки, что не соответствует условию задачи.