Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

Lấy quyền truy cập đồng bộ cho Stack trong C#

Ví dụ 1

Sử dụng lock trên SyncRoot để đồng bộ hóa truy cập Stack:

using System;
using System.Collections;

public class Demo {
    public static void Main() {
        Stack stack = new Stack();
        stack.Push(100);
        stack.Push(200);
        stack.Push(300);
        stack.Push(400);
        stack.Push(500);
        
        Console.WriteLine("Stack...");
        foreach(Object ob in stack) {
            Console.WriteLine(ob);
        }
        
        Console.WriteLine("Số phần tử = " + stack.Count);
        Console.WriteLine("Truy cập đồng bộ...");
        
        lock(stack.SyncRoot) {
            foreach(Object ob in stack) {
                Console.WriteLine(ob);
            }
        }
    }
}

Kết quả

Stack...
500
400
300
200
100
Số phần tử = 5
Truy cập đồng bộ...
500
400
300
200
100

Ví dụ 2

Ví dụ với Stack chứa chuỗi:

using System;
using System.Collections;

public class Demo {
    public static void Main() {
        Stack stack = new Stack();
        stack.Push("Jacob");
        stack.Push("Tim");
        stack.Push("Philips");
        stack.Push("Tom");
        stack.Push("Amy");
        stack.Push("Katie");
        stack.Push("Selena");
        stack.Push("Taylor");
        stack.Push("Justin");
        
        Console.WriteLine("Stack...");
        foreach(Object ob in stack) {
            Console.WriteLine(ob);
        }
        
        Console.WriteLine("\nTruy cập đồng bộ...");
        lock(stack.SyncRoot) {
            foreach(Object ob in stack) {
                Console.WriteLine(ob);
            }
        }
    }
}

Kết quả

Stack...
Justin
Taylor
Selena
Katie
Amy
Tom
Philips
Tim
Jacob
Truy cập đồng bộ...
Justin
Taylor
Selena
Katie
Amy
Tom
Philips
Tim
Jacob