当前位置:首页 > 百科

LPTHREAD

LPT目故上HREAD_START_ROUTINE是一种函数,该函数指向一个函数,通知宿主某个线程已开始执行。

  • 外文名称 LPTHREAD_START_ROUTINE
  • 类型 数学术语

  LPT来自HREAD_START_ROUTINE函数指针

  .NET Framework 4 版 中已弃用此函数指针。

定义

  typedef DWORD (__stdcall *LPTHREA360百科D_START_R此损挥获尔干OUTINE) ( [in] LPVOID lpThreadParameter);

参数

  lpTh余气众readParameter

  [in] 一个指向已经开始执行的代码的指针。

轴承置流函数

  LPTHREAD_START_ROUTINE 指向的函数是回调函数,并且来自必须由承载应用程序的编写器实现。

例子

  API::CreateTh360百科read(NULL,0,(LPTHREAD_START_ROUTINE)Updat根黑兵北虽况带规eThread,(LPVOID)ThreadPara,CREATE_SUSPENDED,&ThreadId);

  //开始一个计算线程 来创建线程

  以下是部分代码(在一个循环里创建线程):

  DWORD ThreadId;

  while(threadcount> =threadcounts)

  {

  Sleep(50);

  Form1-> Edit3-> Text =AnsiString(Close_Pass);

  Form1-> Label3-> Caption=Int喜苏探盾雷吸盐的责益ToStr(threadcount)参地加压研;

  Application-> ProcessMessages();

  }

  int t=ThreadPara-> emun_i;

  strcpy(Close_Pass,Threa检板头专异措单全晚阻善dPara-> emun_str[ThreadPara-> emun_i-1]);

  HANDLE m_它为装育速六完卷谁hHandle;

  m_hHandle=::CreateThread(NULL无若论沿益达决,0,(LPTHREAD_START_ROUTINE)UpdateThread,(LPVOID)Thre儿过席富岁重往盾点若创adPara,CREATE_SUSPENDED,&ThreadId);//开始一个门坏袁铁重入座松快距死计算线程

  SetThreadPriority(m_hHandle,THREAD_P告雷火细RIORITY_HIG雷查HEST);

  ResumeThread(m_hHandl卷农e);

  //-----------------------------------------------------------------------早手----

  #ifndef MainH

  #define MainH

  /向此求差绿看算/----------------到地沿扩----------------------------------------流贵黄评民-------------------

  #include <Classes.hpp>

  #include <Controls.hpp>

  #include <Std厚西血Ctrls.hpp>

  #include <Forms.hpp>

  #include <Buttons.hpp>

  //---------------------------------------------------------------------------

  class TCPUTester:public TThread

  {

  private:

  TSpeedButton *FButton;

  void __fastcall Execute(void);

  public:

  __fastcall TCPUTester(TSpeedButton *Button,

  bool CreateSuspended=true,

  unsigned long CPUMark=1);

  __fastcall ~TCPUTester(void);

  };

  class TForm1 : public TForm

  {

  __published: // IDE-managed Components

  TSpeedButton *SpeedButton1;

  TSpeedButton *SpeedButton2;

  TSpeedButton *SpeedButton3;

  TSpeedButton *SpeedButton4;

  TSpeedButton *SpeedButton5;

  TSpeedButton *SpeedButton6;

  TSpeedButton *SpeedButton7;

  TSpeedButton *SpeedButton8;

  TSpeedButton *SpeedButton9;

  TSpeedButton *SpeedButton10;

  TSpeedButton *SpeedButton11;

  TSpeedButton *SpeedButton12;

  TSpeedButton *SpeedButton13;

  TSpeedButton *SpeedButton14;

  TSpeedButton *SpeedButton15;

  TSpeedButton *SpeedButton16;

  TSpeedButton *SpeedButton17;

  TSpeedButton *SpeedButton18;

  TSpeedButton *SpeedButton19;

  TSpeedButton *SpeedButton20;

  TSpeedButton *SpeedButton21;

  TSpeedButton *SpeedButton22;

  TSpeedButton *SpeedButton23;

  TSpeedButton *SpeedButton24;

  TSpeedButton *SpeedButton25;

  TSpeedButton *SpeedButton26;

  TSpeedButton *SpeedButton27;

  TSpeedButton *SpeedButton28;

  TSpeedButton *SpeedButton29;

  TSpeedButton *SpeedButton30;

  TSpeedButton *SpeedButton31;

  TSpeedButton *SpeedButton32;

  void __fastcall SpeedButton1Click(TObject *Sender);

  void __fastcall FormDestroy(TObject *Sender);

  private: // User declarations

  public: // User declarations

  __fastcall TForm1(TComponent* Owner);

  };

  //---------------------------------------------------------------------------

  extern PACKAGE TForm1 *Form1;

  //---------------------------------------------------------------------------

  #endif

  /************/

  /* CPP单元 */

  /************/

  //---------------------------------------------------------------------------

  #include <vcl.h>

  #pragma hdrstop

  #include "Main.h "

  //---------------------------------------------------------------------------

  #pragma package(smart_init)

  #pragma resource "*.dfm "

  TForm1 *Form1;

  void __fastcall TCPUTester::Execute(void)

  {

  while((!this-> Terminated)&&(FButton-> Down));

  }

  __fastcall TCPUTester::TCPUTester(TSpeedButton *Button,

  bool CreateSuspended,

  unsigned long CPUMark)

  :FButton(Button), TThread(CreateSuspended)

  {

  this-> FreeOnTerminate=true;

  SetThreadAffinityMask ((void *)this-> Handle,1 < <(CPUMark-1));

  }

  __fastcall TCPUTester::~TCPUTester(void)

  {

  FButton=NULL;

  }

  //---------------------------------------------------------------------------

  __fastcall TForm1::TForm1(TComponent* Owner)

  : TForm(Owner)

  {

  DWORD ProcessAffinityMask;

  DWORD SystemAffinityMask;

  if(!GetProcessAffinityMask( GetCurrentProcess(),

  &ProcessAffinityMask,

  &SystemAffinityMask))

  {

  Application-> Terminate();

  }

  for(int i=0;i <sizeof(SystemAffinityMask)*8;i++)

  {

  if(SystemAffinityMask&(1 < <i))

  {

  dynamic_cast <TSpeedButton*> (FindComponent( "SpeedButton "+IntToStr(i+1)))-> Enabled=true;

  }

  }

  }

  //---------------------------------------------------------------------------

  void __fastcall TForm1::SpeedButton1Click(TObject *Sender)

  {

  if(!Sender-> InheritsFrom(__classid(TSpeedButton)))

  {

  return;

  }

  TSpeedButton *Button=dynamic_cast <TSpeedButton*> (Sender);

  if(NULL==Button)

  return;

  if(!Button-> Down)

  {

  return;

  }

  TCPUTester *CPUTester=new TCPUTester(Button,true,StrToInt(Button-> Caption));

  if(NULL==CPUTester)

  {

  return;

  }

  CPUTester-> Resume();

  }

  //---------------------------------------------------------------------------

  void __fastcall TForm1::FormDestroy(TObject *Sender)

  {

  for(int i=0;i <ComponentCount;i++)

  {

  TComponent *comp=Components[i];

  if(comp-> InheritsFrom(__classid(TSpeedButton)))

  dynamic_cast <TSpeedButton *> (comp)-> Down=false;

  }

  Sleep(1000);

  }

  //---------------------------------------------------------------------------

  //TSpeedButton的Caption分别为1~32的数字。

相关资料

  1、《MSDN》

  2、书库亚洲(shuku asia)编程频道

标签:

  • 关注微信
下一篇:家具与绘画

相关文章