|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
05.03.2013, 20:41 | #1 |
Пользователь
Регистрация: 16.02.2013
Сообщений: 37
|
программа с потоками
Сделал половину кода в форме:
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit2.h" #include <stdio.h> #include <conio.h> #include <windows.h> //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm2 *Form2; int a[100]; int k=0; const n=4; //количество потоков DWORD WINAPI ThreadFunc(PVOID pvParam) { int num,sum = 0,i; num = 25*(*((int *)pvParam)); for(i=num;i<num+25;i++) sum += a[i]*a[i]; *(int*)pvParam = sum; DWORD dwResult = sum; return dwResult; } //--------------------------------------------------------------------------- __fastcall TForm2::TForm2(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm2::ПоказатиClick(TObject *Sender) { int x[n]; int i,rez = 0; DWORD dwThreadId[n],dw,dwResult[n]; HANDLE hThread[n]; for (i=0;i<100;i++) a[i] = i; //создание n дочерних потоков for (i=0;i<n;i++) { x[i] = i; hThread[i] = CreateThread(NULL,0,ThreadFunc,(PVO ID)&x[i], 0, &dwThreadId[i]); if(!hThread); } // ожидание завершения n потоков dw = WaitForMultipleObjects(n,hThread,TR UE,INFINITE); // получение значений, переданных потоком в return for (i=0;i<n;i++) { GetExitCodeThread(hThread[i],&dwResult[i]); Form2->Memo1->Lines->Add((int)dwResult[i]); } for(i=0;i<n;i++) rez+=x[i]; Form2->Edit1->Text=rez; } //--------------------------------------------------------------------------- Не могу разобраться как сделать так что-бы число потоков n вводил пользователь, а результат оставался тот же...А так же если изменить n например на 3 (то есть 100 нацело не делится 3 ) чтобы оставшийся 10 елем. массива считал последний поток. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проблема с потоками | Bax77 | Общие вопросы Delphi | 3 | 29.01.2013 16:11 |
Работа с потоками | QuadroX | Помощь студентам | 10 | 20.09.2011 14:24 |
Работа с потоками | derElektroBesen | Помощь студентам | 3 | 17.07.2011 14:33 |
Работа с потоками | gagarin0 | Win Api | 4 | 05.11.2010 02:30 |
Проблемы с потоками в С | m9yt | Общие вопросы C/C++ | 4 | 14.04.2010 14:25 |