国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

線程系列03,多線程共享數(shù)據(jù),多線程不共享數(shù)據(jù)

2019-11-17 02:52:43
字體:
供稿:網(wǎng)友

線程系列03,多線程共享數(shù)據(jù),多線程不共享數(shù)據(jù)

多線程編程,有時希望每個線程的數(shù)據(jù)相互隔離互不影響,有時卻希望線程間能共享數(shù)據(jù),并保持同步。本篇體驗多線程共享和不共享數(shù)據(jù)。

□ 多線程不共享數(shù)據(jù)

對于多線程,CLR到底是怎樣為它們分配內(nèi)存棧空間呢?是"一個蘿卜一個坑",每個線程都有自己的棧空間;還是"大樹底下好乘涼",所有的線程共享同一個棧空間?

我們讓2個線程執(zhí)行相同的靜態(tài)方法,用到相同的變量,通過打印變量來求證多線程棧空間的分配情況。

    class PRogram
    {
        static void Main(string[] args)
        {
            new Thread(SayHi).Start();
            SayHi();
        }
        static void SayHi()
        {
            for (int i = 0; i < 5; i++)
            {
                Console.WriteLine("我是線程#" + Thread.CurrentThread.ManagedThreadId + "這是我的第" +i+  "次說hello");
            }
        }
    }

6

雖然2個線程交叉執(zhí)行,但都說了4次的hello。說明CLR為2個線程都分配了棧空間,變量i在各自的棧空間中相互不受影響。

7

□ 多線程共享數(shù)據(jù)

線程間是需要相互合作的,多個線程如何共享數(shù)據(jù)呢?

※ 共享實例變量

讓2個線程執(zhí)行同一個實例方法,看看是否可以共享對象實例的公共字段。

using System;
using System.Threading;
namespace Consoleapplication1
{
    class Program
    {
        public int whatever;
        static void Main(string[] args)
        {
            Program p = new Program();
            new Thread(p.PrintVariable).Start();
            p.PrintVariable();
        }
        void PrintVariable()
        {
            whatever++;

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 洛隆县| 图们市| 察哈| 洛南县| 新竹县| 江永县| 丹巴县| 团风县| 天峻县| 祁门县| 咸丰县| 中卫市| 溧水县| 穆棱市| 建德市| 隆尧县| 丹巴县| 读书| 南宁市| 涟源市| 海淀区| 鹤峰县| 贵阳市| 麻阳| 东阿县| 会东县| 乌拉特中旗| 泊头市| 库车县| 永修县| 临颍县| 长沙市| 牙克石市| 渝中区| 建瓯市| 高尔夫| 东台市| 镇巴县| 潼关县| 安阳市| 德兴市|