delphi下不同執行緒傳送字串示例

2021-06-10 19:09:58 字數 722 閱讀 1029

不同執行緒之間傳送字串主要是通過copydata方法。

子執行緒傳送:

var

cdds : tcopydatastruct;

begin

cdds.dwdata := 0;

cdds.cbdata := length(s) + 1;

getmem (cdds.lpdata, cdds.cbdata ); //為傳遞的資料區分配記憶體

strcopy (cdds.lpdata, pchar (s));

sendmessage( tform( faowner ).handle , wm_copydata , 0 , cardinal( @cdds ) );

end;

主線程接受訊息,函式定義如下:

procedure shownewform( var msg : tmessage ); message wm_copydata;

函式實現:

var

cdds : tcopydatastruct;

begin

cdds := pcopydatastruct( msg.lparam )^;

sdata := ( pchar( cdds.lpdata ) );

end;

不同執行緒間的等待喚醒機制

具體來說是執行緒間的通訊問題 表示為 student 資源 setthread 生產線程以及getthread 消費執行緒。void wait 執行緒等待 void notify 喚醒等待的單個執行緒 生產線程生產好資源後,通知消費執行緒消費,與此同時再次和消費爭搶時間片,但是此時標記為true,表...

怎樣在不同執行緒間實現對檔案的同步操作

採用了乙個核心類 org.apache.commons.io.output.lockablefilewriter 該類在例項化的時候會在臨時資料夾建立乙個lock檔案,close的時候刪除該lock檔案。根據這個lock的存在與否來判斷目標檔案是否被鎖定。如果目標檔案使用中,那麼建立lock檔案會丟...

怎樣在不同執行緒間實現對檔案的同步操作

採用了乙個核心類 org.apache.commons.io.output.lockablefilewriter 該類在例項化的時候會在臨時資料夾建立乙個lock檔案,close的時候刪除該lock檔案。根據這個lock的存在與否來判斷目標檔案是否被鎖定。如果目標檔案使用中,那麼建立lock檔案會丟...