Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 07.12.2009, 00:15
Novasty Novasty вне форума
Прохожий
 
Регистрация: 07.12.2009
Сообщения: 3
Репутация: 10
По умолчанию Многопоточное вычисление числа Пи

Очень нужна помощь.
Вот задание:
Написать программу, реализующую многопоточное вычисление числа πи по приближенному алгоритму:
Пи/4=1-1/3+1/5-1/7... с некоторой точностью ε .
Определить и построить зависимость времени расчетов от числа потоков (1, 2, 4, 8,
16 потоков). При данном числе потоков произвести несколько запусков
программы, сравнить результаты, объяснить несоответствие результатов.

Код:
var  Pi: real;
     eps: cardinal;
     N: integer;
     Id: integer;
     FLock     : TRTLCriticalSection;
     gIndex     : integer;
     gIndexSave : integer;

function TForm1.X(Param :pointer):real;
var i: integer;
begin
  EnterCriticalSection(FLock);
  Result:=0;
  i:=Id;
  while i<=Eps do
      Result:=(Power(-1, i+1)*4)/(2*i-1);
      i:=i+N;
  LeaveCriticalSection(FLock);
  Pi:=Pi+Result;
  EndThread(0);
end;

procedure TForm1.Button1Click(Sender: TObject);
var i: cardinal;
    Thr:array[1..16] of cardinal;
    ThreadID: LongWord;
const a=1;
begin
  Pi:=0;
  for i:=1 to 16 do
    Thr[i]:=0;
  Eps:=StrToInt(Edit1.Text);

  if RadioButton1.Checked then
    N:=1;

  if RadioButton2.Checked then
    N:=2;

  if RadioButton3.Checked then
    N:=3;

  if RadioButton4.Checked then
    N:=4;

  if RadioButton5.Checked then
    N:=5;

  InitializeCriticalSection(FLock);
  for i:=1 to N do
    begin
      Id:=i;
      Thr[i]:=BeginThread(nil, 0, @TForm1.X, nil, 0, ThreadID);
    end;

  for i:=1 to 16 do
  begin
    CloseHandle(Thr[i]);
  end;
  Edit2.Text:=FloatToStr(Pi);
end;

Выдает нулевой результат, где косяк?
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 17:00.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025