DELPHIÖÐÍê³É¶Ë¿Ú(IOCP)µÄ¼òµ¥·ÖÎöÍêÕûƪ
Ï£Íû´ó¼ÒÔÚתÌùµÄʱºò×¢Ã÷³ö´¦£¬Ð»Ð»)
ÓÃDELPHI¿ª·¢ÍøÂç´úÂëÒѾÓÐÒ»¶Îʱ¼äÁË£¡
ÎÒ·¢ÏÖÔÚÍøÉÏÓÃVCÀ´ÊµÏÖÍê³É¶Ë¿Ú£¨IOCP£©µÄ´úÂëºÜ¶à£¬µ«ÊÇʹÓÃDELPHIÀ´ÊµÏֵľͱȽÏÉÙÁË¡£¶ÔIOCP½²µÄÇå³þµÄ¾Í¸üÉÙÁË¡£ÔÚÕâÀïÎÒ°Ñ×Ô¼º±àдDELPHIϵÄIOCPд³öÀ´£¬Ï£Íû¶Ô¸ÕѧÍê³É¶Ë¿ÚµÄÅóÓÑÓиö°ïÖú¡£
Ê×ÏÈÎÒÃÇÀ´Á˽âһЩÔÚʹÓÃIOCPµÄʱºòÐèҪʹÓõÄһЩ½á¹¹£¡
£¨1£©£ºµ¥IOÊý¾Ý½á¹¹
LPVOID = Pointer;
LPPER_IO_OPERATION_DATA = ^ PER_IO_OPERATION_DATA ;
PER_IO_OPERATION_DATA = packed record
Overlapped: OVERLAPPED;
DataBuf: TWSABUF;
Buffer: array [0..1024] of CHAR;
BytesSEND: DWORD;
BytesRECV: DWORD;
end;
ÉÏÃæµÄ½á¹¹ÖÐOverlapped: OVERLAPPED;ºÍDataBuf: TWSABUF;Êǹ̶¨µÄ½á¹¹ÀàÐÍ¡£Buffer: array [0..1024] of CHAR;ÊÇÓÃÀ´±£´æ½ÓÊÜÊý¾ÝµÄ»º´æ¡£BytesSEND: DWORD;ÓÃÀ´±êÖ¾·¢ËÍÊý¾ÝµÄ³¤¶È¡£BytesRECV: DWORD;ÓÃÀ´±êÖ¾½ÓÊÜÊý¾ÝµÄ³¤¶È¡£ÒòΪÍê³É¶Ë¿ÚµÄ¹¤×÷ÕßÏ߳̿ÉÒÔ½ÓÊܵ½À´×Ô¿Í»§¶ËµÄÊý¾Ý£¬Í¬Ê±»¹¿ÉÒÔ½ÓÊܵ½×Ô¼º·¢Ë͸ø¿Í»§¶ËµÄÊý¾Ý£¬ËùÒÔÎÒÃÇʹÓÃBytesSEND£¬BytesRECV±äÁ¿À´ËµÊÇÓÃÀ´Çø·ÖÕâ´ÎµÄÊý¾ÝÊÇÀ´×Ô¿Í»§¶ËµÄÊý¾Ý»¹ÊÇ×Ô¼º·¢ËͳöÈ¥µÄÊý¾Ý¡£ÏêϸµÄʹÓ÷½·¨£¬ÎÒ»áÔÚÏÂÃæÏêϸ˵Ã÷¡£
£¨2£©£º“µ¥¾ä±úÊý¾Ý½á¹¹”
LPPER_HANDLE_DATA = ^ PER_HANDLE_DATA;
PER_HANDLE_DATA = packed record
Socket: TSocket;
end;
ÏÂÀ´ÎÒ´Ó±àдһ¸öÍê³É¶Ë¿ÚµÄΪÀý˵Ã÷¡£
if WSAStartUp($202, wsData) <> 0 then
begin
WSACleanup();
end;
¼ÓÔØSOCKET¡£ÎÒʹÓõÄÊÇ2.2°æÎªÁ˺óÃæ·½±ã¼ÓÈëÐÄÌø¡£
CompletionPort:=CreateIOCompletionPort(INVALID_HANDLE_VALUE,0,0,0);
´´½¨Ò»¸öÍê³É¶Ë¿Ú¡£
GetSystemInfo(LocalSI);
for I:=0 to LocalSI.dwNumberOfProcessors * 2 -1 do
begin
hThread := CreateThread(nil, 0, @ServerWorkerThread, Pointer(CompletionPort),0, ThreadID);
if (hThread = 0) then
begin
Exit;
end;
CloseHandle(hThread);
end;
¸ù¾ÝCPUµÄÊýÁ¿´´½¨CPU*2ÊýÁ¿µÄ¹¤×÷ÕßÏ̡߳£
Listensc:=
Ïà¹ØÎĵµ£º
DelphiÖÐʵÏÖÎļþ¿½±´µÄÈýÖÖ·½·¨
1£®µ÷ÓÃAPIº¯Êý
procedure CopyFile(fromFileName,ToFileName:string);
var
f1,f2:file;
Begin
AssignFile(f1,fromFileName); file://Ö¸¶¨Ô´ÎļþÃû
AssignFile(f2,ToFileName); file://Ö¸¶¨Ä¿±êÎļþÃû
Reset(f1);
Try
Rewrite(f2);
Try
If Lzcopy(TfileRec(f1).handle,TfileRe ......
Ò» DllµÄÖÆ×÷Ò»°ã²½Öè
¶þ ²ÎÊý´«µÝ
Èý DLLµÄ³õʼ»¯ºÍÍ˳öÇåÀí[Èç¹ûÐèÒª³õʼ»¯ºÍÍ˳öÇåÀí]
ËÄ È«¾Ö±äÁ¿µÄʹÓÃ
Îå µ÷Óþ²Ì¬ÔØÈë
Áù µ÷Óö¯Ì¬ÔØÈë
Æß ÔÚDLL½¨Á¢Ò»¸öTForM
°Ë ÔÚDLLÖн¨Á¢Ò»¸öTMDIChildForM
¾Å ʾÀý£º
Ê® DelphiÖÆ×÷µÄDllÓëÆäËûÓïÑԵĻìºÏ ......
Ò»ÌáÆð»ùÓÚWeb Services¼¼ÊõµÄÓ¦ÓóÌÐò¿ª·¢£¬Ò»°ãÈËÊ×ÏÈÏëµ½µÄ¿ª·¢¹¤¾ßÊÇVs.net£¬Æäʵ×÷Ϊ¿ìËÙÓ¦ÓóÌÐò¿ª·¢¹¤¾ß(RAD)µÄÀÏ´ó£¬Delphi´Ó6.0¾Í¿ªÊ¼Ö§³ÖWeb ServicesµÄ¿ª·¢ºÍÓ¦ÓÃÁË£¬±¾ÎÄͨ¹ýʹÓÃDelphi 7.0µ÷ÓÃÐÂÀË·¢ËͶÌÐŵÄWeb Service½øÐжÌÐÅÓ¦ÓóÌÐò¿ª·¢ÕâһʵÀýÏêϸµÄ½éÉÜÔÚDelphiÖÐÈçºÎ¿ª·¢»ùÓÚWeb ServicesµÄÓ¦ÓÃϵͳ¡ ......
DelphiÖе÷ÓÃWindows×Ô´øµÄͼƬºÍ´«Õæä¯ÀÀÆ÷²é¿´Í¼Æ¬£¬¿ÉÒÔÐýתͼƬҲ¿ÉÒÔµ÷Óûͼ³ÌÐò±à¼Í¼Ïñ¡£×Ô¼ºÐ´²»³öÀ´ºÃµÄ´úÂ룬¾ÍÓÃϵͳ×Ô´øµÄºÃÁË¡£
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,ShellAPI;
type
TForm1 = class(TFo ......