<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    blog.Toby

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      130 隨筆 :: 2 文章 :: 150 評(píng)論 :: 0 Trackbacks
    1.每個(gè)窗體都有自己的都在不同的線程上運(yùn)行,如果需要在窗體之間交互,就需要在線程之間交互。

    2.當(dāng)線程Sleep時(shí),系統(tǒng)就退出執(zhí)行隊(duì)列一段時(shí)間,當(dāng)睡眠結(jié)束時(shí),系統(tǒng)會(huì)產(chǎn)生一個(gè)時(shí)鐘中斷,從而
    使線程回到執(zhí)行隊(duì)列中,從而恢復(fù)線程的執(zhí)行。

    3.如果父線程先于子線程結(jié)束,那么子線程將在父線程結(jié)束的同時(shí)被迫結(jié)束。Thread.Join()方法使父線程等待,直到子線程結(jié)束。
    Abort()方法帶來的后果是不可恢復(fù)的終止線程。

    4.起始線程可以稱之為主線程,如果所有的前臺(tái)線程都停止了,那么主線程可以終止,而所有的后臺(tái)線程都將無條件終止。
    后臺(tái)線程跟前臺(tái)線程只有一個(gè)區(qū)別,那就是后臺(tái)線程不妨礙程序的終止。一旦一個(gè)進(jìn)程所有的前臺(tái)線程都終止后,CLR
    將通過調(diào)用任意一個(gè)存活中的后臺(tái)進(jìn)程的Abort()方法來徹底終止進(jìn)程。

    6.掛起,睡眠(都可稱為--阻塞,暫停)
    與Thread.Sleep 不同,Thread.Suspend 不會(huì)使線程立即停止執(zhí)行。直到線程到達(dá)安全點(diǎn)之后它才可以將該線程掛起。如果線程尚
    未啟動(dòng)或已經(jīng)停止,則它將不能掛起。調(diào)用 Thread.Resume 將使另一個(gè)線程跳出掛起狀態(tài)并使該線程繼續(xù)執(zhí)行。
    一個(gè)線程不能對(duì)另一個(gè)線程調(diào)用Sleep ,但是一個(gè)線程可以對(duì)另一個(gè)線程調(diào)用Suspend。
    還可以使用許多其它的方式來阻塞線程。例如,可以通過調(diào)用 Thread.Join 使一個(gè)線程等待另一個(gè)線程(子線程)停止。使用
    Monitor.Wait使一個(gè)線程等待訪問一個(gè)同步對(duì)象。

    5.關(guān)鍵字lock可以把一段代碼定義為互斥段(critical section),互斥段在一個(gè)時(shí)刻內(nèi)只允許一個(gè)線程進(jìn)入執(zhí)行,而其他線程必須等待。
    多線程公用一個(gè)對(duì)象時(shí),就不應(yīng)該使用lock關(guān)鍵字了,這里Monitor,Monitor提供了使線程共享資源的方案。
    Monitor類可以鎖定一個(gè)對(duì)象,一個(gè)線程只有得到這把鎖才可以對(duì)該對(duì)象進(jìn)行操作。
    如:
    Monitor.Enter(obj);
    //現(xiàn)在oQueue對(duì)象只能被當(dāng)前線程操縱了
    Monitor.Exit(obj);

    6.一個(gè)進(jìn)程開始時(shí)至少會(huì)有一個(gè)主線程 ( 即主執(zhí)行實(shí)例 ) ,這是在系統(tǒng)加載你的程序的時(shí)候所創(chuàng)建的主執(zhí)行流程。
    而消息隊(duì)列則是與線程 ( Thread ) 相關(guān)的,在似win2k上一個(gè)線程有一個(gè)且只有一個(gè)消息隊(duì)列 ( queue ) 與之相對(duì)應(yīng)。
    消息隊(duì)列是在什么時(shí)候生成的呢? 在似win2k系統(tǒng)上,從一開始創(chuàng)建線程就已經(jīng)有了。
    一個(gè)線程可以創(chuàng)建多個(gè)窗體。統(tǒng)發(fā)送給這些窗口的消息都統(tǒng)一發(fā)送到同一個(gè) 消息隊(duì)列 中,幸虧消息結(jié)構(gòu)中有msg.hwnd指出該條消息與
    哪一個(gè)窗口相關(guān), DispatchMessage() 函數(shù)就是依照這個(gè)保證消息分派處理自動(dòng)化而且不會(huì)出錯(cuò)!

    7.每個(gè)窗體都屬于創(chuàng)建它的線程,在一線程中直接訪或間接問其它線程中的窗體的方法將導(dǎo)致運(yùn)行時(shí)錯(cuò)誤(VS2005)。
    解決方法:使用窗體從Control繼承而來的Control.Invoke(Delegate)方法。該方法將在創(chuàng)建窗體的線程上執(zhí)行委托指向的方法。
    注意:在VS2003下,可以在一個(gè)線程中直接或間接調(diào)用另一個(gè)線程中的窗體的方法,而不會(huì)導(dǎo)致運(yùn)行時(shí)錯(cuò)誤。
    posted on 2006-11-27 22:24 渠上月 閱讀(353) 評(píng)論(1)  編輯  收藏 所屬分類: other tips

    主站蜘蛛池模板: 九一在线完整视频免费观看| 色吊丝免费观看网站| 羞羞视频免费网站含羞草| 久久99精品国产免费观看| 免费观看一级毛片| 久久精品7亚洲午夜a| 日韩精品亚洲专区在线影视 | 亚洲日韩精品国产一区二区三区| 五月天婷婷精品免费视频| 久久99九九国产免费看小说| 日韩亚洲变态另类中文| 亚洲精品无码专区| 最近最好最新2019中文字幕免费| 亚洲A∨午夜成人片精品网站| 色婷五月综激情亚洲综合| 成全高清在线观看免费| 亚洲成AV人网址| 亚洲私人无码综合久久网| 91麻豆国产免费观看| 精品亚洲综合在线第一区| 国产区图片区小说区亚洲区| 免费国产成人高清在线观看网站| 亚洲精品夜夜夜妓女网| 在线播放国产不卡免费视频| 在线观着免费观看国产黄| 亚洲人成7777影视在线观看| 91福利免费体验区观看区| 久久噜噜噜久久亚洲va久| 精品亚洲永久免费精品| 中文字幕第一页亚洲| 日韩亚洲变态另类中文| 在线播放免费人成视频网站| 国产猛烈高潮尖叫视频免费 | 免费一级毛片在级播放| 国产成人亚洲综合无| 免费涩涩在线视频网| 亚洲AV无码一区二区三区久久精品| 麻豆最新国产剧情AV原创免费| 亚洲同性男gay网站在线观看| h视频在线观看免费完整版| 亚洲一区电影在线观看|