ForumSevgisi.Com

  ForumSevgisi.Com > ForumSevgisi Webmaster Bölümü > Webmaster Genel

Webmaster Genel Webmasterlıkla ilgili Her şeyin Paylaşıldığı Bölüm.


ExThreads.pas - v2

Webmasterlıkla ilgili Her şeyin Paylaşıldığı Bölüm.


ExThreads.pas - v2

ForumSevgisi Webmaster Bölümü Kategorisinde ve Webmaster Genel Forumunda Bulunan ExThreads.pas - v2 Konusunu Görüntülemektesiniz,Konu İçerigi Kısaca ->> ExThreads.pas - v2 ExThreads.pas - v2 Kod: Unit ExThreads; interface uses Windows, Classes; Function StartThread(ThreadFunc: TThreadFunc):LongInt; Procedure StopThread(TID:Pointer); Procedure Thread_SetAffinity(TID:Integer; ...

Kullanıcı Etiket Listesi

Yeni Konu aç  Cevapla
LinkBack Seçenekler Stil

Okunmamış 09 Nisan 2015, 16:26   #1
Durumu:
Çevrimdışı
Kaf_Dağı - ait Kullanıcı Resmi (Avatar)
Arastirmaci
Üyelik tarihi: 26 Ekim 2014
Şehir: ~~~~~~
Mesajlar: 1.130
Konular: 710
Beğenilen: 168
Beğendiği: 334
www.forumsevgisi.com
Standart ExThreads.pas - v2

ExThreads.pas - v2

ExThreads.pas - v2

Kod:
        Unit ExThreads;
 
interface
 
uses
  Windows, Classes;
 
Function StartThread(ThreadFunc: TThreadFunc):LongInt;
Procedure StopThread(TID:Pointer);
 
Procedure Thread_SetAffinity(TID:Integer; CpuCoreID:Byte);  // 0 1 2 = 3 Core | 0 1 2 3 = 4 Core
Procedure Thread_Activate(TID:Pointer);
 Function Thread_IsActive(TID:Integer):Boolean;
 Function Thread_ActiveCount:LongInt;
 
Procedure Prms_Add(TID:Pointer; Prm:String);
Procedure Prms_Add_Ex(TID:LongInt; Prm:String);
 
Procedure Prms_Del(TID:Pointer; PrmID:LongInt);
 Function Prms_Get(TID:Pointer; PrmID:LongInt):String;
 
 Function Prms_Count(TID:Pointer):LongInt;
 
Function Process_SetAffinity(AProcessID: Cardinal; AProcessAffinity: Cardinal): Boolean;
 
Function System_GetNumberOfProcessors:Byte;
 
Implementation
 
function CallNtPowerInformation(InformationLevel: DWORD; InPutBuffer: Pointer; InputBufferSize: ULONG; OutPutBuffer:  Pointer; OutPutBufferSize: ULONG): DWORD; stdcall; external 'powrprof.dll';
 
Const
 MaxThread=2000;
 
Var
 ThreadActive:Boolean=False;
 Threads:Array[1..MaxThread] Of THandle;
 Threads_Activate:Array[1..MaxThread] Of Boolean;
    Prms:Array[1..MaxThread] Of TStringList;
 
Procedure Prms_Add(TID:Pointer; Prm:String);
Begin
 Prms[Integer(TID)].Add(Prm);
End;
 
Procedure Prms_Add_Ex(TID:LongInt; Prm:String);
Begin
 Prms[TID].Add(Prm);
End;
 
Procedure Prms_Del(TID:Pointer; PrmID:LongInt);
Begin
 Prms[Integer(TID)].Delete(PrmID);
End;
 
Function Prms_Get(TID:Pointer; PrmID:LongInt):String;
Begin
 Result:=Prms[Integer(TID)].Strings[PrmID];
End;
 
Function Prms_Count(TID:Pointer):LongInt;
Begin
 Result:=Prms[Integer(TID)].Count;
End;
 
Function GetEmty_TID:LongInt;
Var
 I:LongInt;
 
Begin
 Result:=0;
 For I:=1 To MaxThread Do
 Begin
  If Threads[I]=0 Then
  Begin
   Result:=I;
   Exit;
  End;
 End;
End;
 
Function Thread_ActiveCount:LongInt;
Var
 I:LongInt;
 
Begin
 Result:=0;
 For I:=1 To MaxThread Do
 Begin
  If Threads[I]>0 Then
  Begin
   Result:=Result+1;
  End;
 End;
End;
 
Function Process_SetAffinity(AProcessID: Cardinal; AProcessAffinity: Cardinal): Boolean;
var
  ProcessHandle: Integer;
begin
    ProcessHandle := OpenProcess( PROCESS_SET_INFORMATION, False, AProcessID);
    Result :=  SetProcessAffinityMask( ProcessHandle, AProcessAffinity);
end;
 
Function Thread_IsActive(TID:Integer):Boolean;
Begin
 Result:=Threads_Activate[TID];
End;
 
Procedure Thread_Activate(TID:Pointer);
Begin
 Threads_Activate[Integer(TID)]:=True;
End;
 
Procedure Thread_SetAffinity(TID:Integer; CpuCoreID:Byte); // 0 1 2 = 3 Core | 0 1 2 3 = 4 Core
Begin
 SetThreadAffinityMask(Threads[TID], CpuCoreID);
End;
 
Procedure StopThread(TID:Pointer);
Begin
 Sleep(1000);
 CloseHandle(Threads[Integer(TID)]);
 Threads[Integer(TID)]:=0;
 Prms[Integer(TID)].Destroy;
 Threads_Activate[Integer(TID)]:=False;
End;
 
Function System_GetNumberOfProcessors:Byte;
var
 size, ret: Cardinal;
 PowerInfos: Pointer;
 SysInfo: SYSTEM_INFO;
 
begin
 Result:=1;
 GetSystemInfo(SysInfo);
 size :=  SysInfo.dwNumberOfProcessors;
 GetMem(PowerInfos, size);
 ZeroMemory(PowerInfos, size);
 ret := CallNTPowerInformation(11, nil, 0, PowerInfos, size);
 If ret = ERROR_SUCCESS then
 begin
  Result:=SysInfo.dwNumberOfProcessors;
 end;
 FreeMem(PowerInfos, size);
end;
 
Function StartThread(ThreadFunc: TThreadFunc):LongInt;
Var
 Temp:DWORD;
  TID:LongInt;
 
Begin
 Result:=0;
 TID:=GetEmty_TID;
 If TID>0 Then
 Begin
  Try
   Threads_Activate[TID]:=False;
   Prms[TID]:=TStringList.Create;
   Prms[TID].Clear;
   Threads[TID]:=BeginThread(nil, 0, Addr(ThreadFunc), Pointer(TID), 0, Temp);
   SetThreadPriority(Threads[TID], THREAD_PRIORITY_NORMAL);
   Repeat
    Sleep(1);
   Until (Threads_Activate[TID]=True);
   Result:=TID;
  Except
   StopThread(Pointer(TID));
   Result:=0;
  End;
 End;
End;
 
End.

________________
.........................
imza
Alıntı ile Cevapla
Yeni Konu aç  Cevapla

Etiketler
exthreads.pas - v2, exthreadspas

Seçenekler
Stil


Saat: 01:56

Forum Yasal Uyarı
vBulletin® ile Oluşturuldu
Copyright © 2016 vBulletin Solutions, Inc. All rights reserved.

ForumSevgisi.Com Her Hakkı Saklıdır
Tema Tasarım:
Kronik Depresif


Sitemiz bir 'paylaşım' sitesidir. Bu yüzden sitemize kayıt olan herkes kontrol edilmeksizin mesaj/konu/resim paylaşabiliyorlar. Bu sebepten ötürü, sitemizdeki mesaj ya da konulardan doğabilecek yasal sorumluluklar o yazıyı paylaşan kullanıcıya aittir ve iletişim adresine mail atıldığı taktirde mesaj ya da konu en fazla 48 saat içerisinde silinecektir.

ankara escort, izmir escort ankara escort, ankara escort bayan, eryaman escort, bursa escort pendik escort, antalya escort,