當前位置:編程學習大全網 - 編程語言 - 編程中93怎樣實現PB中多線程技術?

編程中93怎樣實現PB中多線程技術?

用PB編寫多線程應用程序

 多線程是指壹個程序內部同時執行的多個流程,與單線程相比,它至少有兩個方面的優點:第壹,它可以更好地利用系統資源,比如CPU,若壹個線程因I/O操作受阻,另壹個線程仍可利用CPU來執行;第二,它更好地滿足了客戶的需求,因為挑剔的客戶希望妳開發的程序在顯示動畫的同時還能播放音樂、顯示文件、下載網絡文件等,這是單線程應用程序無法完成的。目前,支持多線程的開發工具主要有:Java、VC、Delphi和C++Builder。

 多線程強調的是壹個進程內部有多個流程在同時執行,同時執行的概念相當於PB分布式計算中的異步處理。也就是說,只要我們在壹個程序內部實現了異步處理,就相當於實現了多線程。分析至此,下壹步該怎麽做就不言而喻了:在壹個應用程序內部實現分布式計算,使用服務器推送技術,異步執行***享對象中的函數。

 下面就編寫壹個Demo,介紹在PB中如何利用分布式計算技術來開發多線程應用程序,其程序結構如圖1所示。uo—thread1和uo—thread2是類用戶對象uo—thread的兩個實例,uo—thread的功能是給實例變量li—Count自加5秒,自加的同時向中間對象uo—argv1和uo—argv2發送ue—thread消息。兩個中間對象的功能是把ue—thread消息轉化為ue—thread1和ue—thread2後發給主窗口w—main。

 主窗口接收到ue—thread1消息後,顯示uo—thread1中自加變量的值,接收到ue—thread2後,顯示uo—thread2中自加變量的值。在單線程中,uo—thread1先執行,5秒鐘後uo—thread2開始執行,因此,前5秒內主窗口只能收到ue—thread1消息,後5秒內只能收到ue—thread2消息。在多線程中,uo—thread1和uo—thread2同時執行,因此w—main可以不斷地收到ue—thread1和ue—thread2消息。

 1.設計用戶對象uo—thread

 新建壹個類用戶對象,命名為uo—thread,添加如下兩個實例變量:

 NonVisualObject inv—arg

 Long li—Count //自加變量

 創建如下三個用戶函數:

 ⑴uf—start(),功能是:完成自加5秒並向中間對象發送ue—thread消息。腳本為:

 Time t0

 t0= Now() //獲取當前時間

 Do While SecondsAfter(t0,Now())〈=5

 li—Count++//實例變量自加5秒

 inv—arg.TriggerEvent(′ue—thread′)

 //向中間對象發送ue—thread消息

 Loop

 ⑵uf—getcount(),功能是:獲取自加變量的瞬間值。其腳本為:

 Return li—Count //返回實例變量

 ⑶uf—setparent(NonVisualObject nv—arg),調用時,使用中間對象為參數。腳本為:

 inv—arg=nv—arg

 //用中間對象給實例變量賦值

 

  • 上一篇:編程到特斯拉
  • 下一篇:數學啟蒙從壹出生就開始的空間理解
  • copyright 2024編程學習大全網