Programlama | Programlama Dilleri | C Programlama Dili |C++

Anasayfa Programlama C++ Builder Mükemmel Sayı MultiThread Uygulaması


Mükemmel Sayı MultiThread Uygulaması

Bu Program C++ Builder 6 ile uyumludur.

AÇIKLAMA

Bu program verilen görevi koşulacak processlere(yani küçük işlem parçacıklarına) böler.
Thread isimli klasör icinde bu Thread.exe'nin projesi bulunmaktadir. Ve verilen problem kosulacak process sayısına bolunerek işlem belirli parçalara ayrılarak hız kazanılır. Program koşarken görev yöneticisi işlem sekmesinde koşan threadleri gorebilirsiniz.

Thread programı argüman aldığından dolayı o projeyi tek başına koşarsanız hata mesajı alacaksınız.
Ama ana program icinden argüman'lı olarak çağrıldığından dolayı sorun olmayacaktır.

Programın Tamamını Aşağıdaki Linkten İndirebilirsiniz

Linki Görebilmeniz İçin Üye Olmanız Gerekmektedir...

Üye Kayıt

Program Kodu:

  1. //---------------------------------------------------------------------------
  2.  
  3. #include <vcl.h>
  4. #pragma hdrstop
  5. #include "stdio.h"
  6. #include "Unit1.h"
  7. //---------------------------------------------------------------------------
  8. #pragma package(smart_init)
  9. #pragma resource "*.dfm"
  10. TForm1 *Form1;
  11. //---------------------------------------------------------------------------
  12. __fastcall TForm1::TForm1(TComponent* Owner)
  13.         : TForm(Owner)
  14. {
  15. }
  16. //---------------------------------------------------------------------------
  17.  
  18. void __fastcall TForm1::Button1Click(TObject *Sender)
  19. {
  20. if(Edit1->Text!="")
  21. {
  22. Label3->Caption="";
  23. Label7->Caption="";
  24. Label8->Caption="";
  25. ListBox1->Items->Clear();
  26. ListBox2->Items->Clear();
  27. FILE *dosya;
  28. if((dosya=fopen("sayilar.txt","w+"))==NULL)
  29. exit(6);
  30. int p=StrToInt(InputBox("SINIR DEĞERİ","Bulunacak Mükemmel Sayılar İçin Sınır Değeri Girin",""));
  31.  TDateTime time1=Time();
  32. Label7->Caption=time1;
  33. int bolum=p/StrToInt(Edit1->Text);
  34. for(int i=1;i<=StrToInt(Edit1->Text);i++)
  35. {
  36. String x="Thread.exe ";
  37. x+=bolum*(i-1);
  38. x+=" ";
  39. x+=bolum*i;
  40. ListBox1->Items->Add(bolum*i);
  41. WinExec(x.c_str(),NULL);
  42. }
  43. bool durum=true;
  44. while(durum)
  45. {
  46.  int tut=ListBox1->Items->Count;
  47.  int yep=0;
  48.  for(int i=0;i<tut;i++)
  49.  {
  50.   if(FileExists(ListBox1->Items->Strings[i]))
  51.   yep++;
  52.  }
  53.  if(yep==tut)
  54.  durum=false;
  55. }
  56. fclose(dosya);
  57. TDateTime time2=Time();
  58. Label8->Caption=time2;
  59. TDateTime  x=time2-time1;
  60. Label3->Caption=x;
  61. ListBox2->Items->LoadFromFile("sayilar.txt");
  62.  
  63. DeleteFile("sayilar.txt");
  64. Sleep(1000);
  65.  int tut=ListBox1->Items->Count;
  66.  for(int i=0;i<tut;i++)
  67.  DeleteFile(ListBox1->Items->Strings[i]);
  68. }
  69. else
  70. Application->MessageBoxA("Koşacak Process Sayısını Giriniz","UYARI",MB_ICONINFORMATION);
  71. }
  72. //---------------------------------------------------------------------------
  73.  
  74.  
  75.  

Yorumlar (0)
Sadece kayıtlı kullanıcılar yorum yazabilir!
Son Güncelleme ( Cumartesi, 13 Ağustos 2011 03:50 )