⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 class1.cs

📁 《c#技术内幕代码》
💻 CS
字号:
using System;
using System.Threading;

namespace Ch12_5
{
	class Account 
	{
		int fBalance;
		Boolean fLocks;

		Random r = new Random();

		internal Account(Boolean useLocks, int initial) 
		{
			fBalance = initial;
			fLocks = useLocks;
		}

		internal int DoTransaction(Boolean doLock, int amount) 
		{

			if (fBalance < 0) 
			{
				throw new Exception("Negative fBalance");
			}
			if ( doLock )
			{
				lock (this)
				{
					if (fBalance >= amount) 
					{
						Thread.Sleep(5);
						fBalance = fBalance - amount;
						return amount;
					} 
					else 
					{
						return 0; // transaction rejected
					}
				}
			}
			else
			{
				if (fBalance >= amount) 
				{
					Thread.Sleep(5);
					fBalance = fBalance - amount;
					return amount;
				} 
				else 
				{
					return 0; // transaction rejected
				}
			}
		}

		internal void DoTransactions() 
		{
			for (int i = 0; i < 100; i++) 
			{
				DoTransaction(fLocks, r.Next(-50, 100));
			}
		}
	}

	class CH12_5
	{

		static Thread[] threads = new Thread[10];

		public static void Main(string[] args) 
		{
			Boolean doLock = false;

			if ( args[0] == "lock" )
				doLock = true;
			else
				doLock = false;

			Account acc = new Account (doLock, 0);

			for (int i = 0; i < 10; i++) 
			{
				Thread t = new Thread(new ThreadStart(acc.DoTransactions));
				threads[i] = t;
			}

			for (int i = 0; i < 10; i++) 
			{
				threads[i].Start();
			}
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -