国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

多線程中的局部變量

bitkylin / 2977人閱讀

摘要:在實(shí)現(xiàn)多線程業(yè)務(wù)時(shí),如果沒(méi)有涉及到共享數(shù)據(jù)處理的業(yè)務(wù),還是使用局部變量,必將,在處理共享數(shù)據(jù)時(shí),還是需要加鎖線程與線程間的局部變量相互獨(dú)立,變量的處理互補(bǔ)干擾。

在實(shí)現(xiàn)多線程業(yè)務(wù)時(shí),如果沒(méi)有涉及到共享數(shù)據(jù)處理的業(yè)務(wù),還是使用局部變量,必將,在處理共享數(shù)據(jù)時(shí),還是需要加鎖;線程與線程間的局部變量相互獨(dú)立,變量的處理互補(bǔ)干擾。

在多線程的場(chǎng)景下,針對(duì)線程中的局部變量,如果需要讓其他業(yè)務(wù)操作此變量時(shí),此時(shí)

局部變量相對(duì)當(dāng)前線程來(lái)講,是全局變量;

局部變量相對(duì)其他線程來(lái)講,是局部變量;

為了實(shí)現(xiàn)當(dāng)前線程的局部變量被部分業(yè)務(wù)處理時(shí),以兩個(gè)小例子說(shuō)明下

示例 1:自定義全局變量,以當(dāng)前線程做為 key
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals

from threading import current_thread, Thread

global_variable = {}


def handler():
    std = global_variable[current_thread()]
    print "Hello {} and this thread"s name is {}".format(std, current_thread().name)


def test_thread(name):
    global_variable[current_thread()] = name
    handler()


t1 = Thread(target=test_thread, args=("Kobe", ), name="thread_kobe")
t2 = Thread(target=test_thread, args=("TMC", ), name="thread_tmc")

t1.start()
t2.start()

t1.join()
t2.join()

print global_variable
print "end......"

運(yùn)行結(jié)果:

Hello Kobe and this thread"s name is thread_kobe
 Hello TMC and this thread"s name is thread_tmc
{: u"Kobe", : u"TMC"}
end......

這樣,當(dāng)前線程的數(shù)據(jù)不會(huì)被其他線程捕捉和處理,但是不建議這么做,畢竟 threading 模塊提供了 local

示例 2:使用 local
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals

from threading import current_thread, Thread, local

local_variable = local()


def handler():
    std = local_variable.name
    print "Hello {} and this thread"s name is {}".format(std, current_thread().name)


def test_thread(name):
    local_variable.name = name
    handler()


t1 = Thread(target=test_thread, args=("Kobe", ), name="thread_kobe")
t2 = Thread(target=test_thread, args=("TMC", ), name="thread_tmc")

t1.start()
t2.start()

t1.join()
t2.join()

print local_variable
print "end......"

運(yùn)行結(jié)果如下:

Hello Kobe and this thread"s name is thread_kobe
Hello TMC and this thread"s name is thread_tmc

end......

參考

http://yangcongchufang.com/%E...

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/38640.html

相關(guān)文章

  • 深入理解Python中的ThreadLocal變量(上)

    摘要:我們知道多線程環(huán)境下,每一個(gè)線程均可以使用所屬進(jìn)程的全局變量。在線程中使用局部變量則不存在這個(gè)問(wèn)題,因?yàn)槊總€(gè)線程的局部變量不能被其他線程訪問(wèn)。 我們知道多線程環(huán)境下,每一個(gè)線程均可以使用所屬進(jìn)程的全局變量。如果一個(gè)線程對(duì)全局變量進(jìn)行了修改,將會(huì)影響到其他所有的線程。為了避免多個(gè)線程同時(shí)對(duì)變量進(jìn)行修改,引入了線程同步機(jī)制,通過(guò)互斥鎖,條件變量或者讀寫鎖來(lái)控制對(duì)全局變量的訪問(wèn)。 只用全局變...

    huangjinnan 評(píng)論0 收藏0
  • 并發(fā)學(xué)習(xí)筆記(1)

    摘要:共享數(shù)據(jù)使線程之間的通信比進(jìn)程之間的通信更有效。并發(fā)模型和的區(qū)別說(shuō)明的作用是啟動(dòng)一個(gè)新線程操作系統(tǒng)級(jí)別,有一個(gè)方法啟動(dòng)新線程,新線程會(huì)執(zhí)行相應(yīng)的方法。單獨(dú)調(diào)用會(huì)在當(dāng)前線程中執(zhí)行并不會(huì)啟動(dòng)新線程創(chuàng)建一個(gè)線程即可但是這個(gè)線程沒(méi)有執(zhí)行任何代碼段。 tutorials site 并發(fā)Concurrency發(fā)展的歷史 單CPU,一次只能運(yùn)行一個(gè)程序 -- 多任務(wù),一次同時(shí)運(yùn)行多個(gè)任...

    objc94 評(píng)論0 收藏0
  • (基礎(chǔ)系列)ThreadLocal的用法、原理和用途

    摘要:那線程局部變量就是每個(gè)線程都會(huì)有一個(gè)局部變量,獨(dú)立于變量的初始化副本,而各個(gè)副本是通過(guò)線程唯一標(biāo)識(shí)相關(guān)聯(lián)的。移除此線程局部變量當(dāng)前線程的值。如果此線程局部變量隨后被當(dāng)前線程讀取,且這期間當(dāng)前線程沒(méi)有設(shè)置其值,則將調(diào)用其方法重新初始化其值。 前言 ThreadLocal網(wǎng)上資料很多,那我為什么還要寫下這篇文章呢?主要是想?yún)R聚多篇文章的優(yōu)秀之處以及我對(duì)于ThreadLocal的理解來(lái)加深印...

    bitkylin 評(píng)論0 收藏0
  • Java線程的生命周期

    摘要:線程的生命周期線程的生命周期大致可以分為下面五種狀態(tài)新建狀態(tài)就緒狀態(tài)運(yùn)行狀態(tài)休眠狀態(tài)終止?fàn)顟B(tài)新建狀態(tài),是線程被創(chuàng)建且未啟動(dòng)的狀態(tài)這里的創(chuàng)建,僅僅是在的這種編程語(yǔ)言層面被創(chuàng)建,而在操作系統(tǒng)層面,真正的線程還沒(méi)有被創(chuàng)建。 概要 目前CPU的運(yùn)算速度已經(jīng)達(dá)到了百億次每秒,甚至更高的量級(jí),家用電腦即使維持操作系統(tǒng)正常運(yùn)行的進(jìn)程也會(huì)有數(shù)十個(gè),線程更是數(shù)以百計(jì)。 線程是CPU的調(diào)度和分派的基本單位...

    ivyzhang 評(píng)論0 收藏0
  • Java線程基礎(chǔ)-ThreadLocal

    摘要:并沒(méi)有提供語(yǔ)言級(jí)的線程局部變量,而是在類庫(kù)里提供了線程局部變量的功能,也就是這次的主角類。 Yuicon 轉(zhuǎn)載請(qǐng)注明原創(chuàng)出處,謝謝! 序 在多線程環(huán)境下,訪問(wèn)非線程安全的變量時(shí)必須進(jìn)行線程同步,例如使用synchronized方式訪問(wèn)HashMap實(shí)例。但是同步訪問(wèn)會(huì)降低并發(fā)性,影響系統(tǒng)性能。這時(shí)候就可以用空間換時(shí)間,如果我們給每個(gè)線程都分配一個(gè)獨(dú)立的變量,就可以用非同步的方式使用非...

    JasonZhang 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<