PDA

View Full Version : این کدها چیه؟



proreza
سه شنبه 15 تیر 1389, 18:16 عصر
سلام
من داشتم تو اینترنت میچرخیدم که در مورد سی شارپ به این کد ها رسیدن کار این کدها چیه اصلا چه جوری باید اجرا کنم من یکم مبتدی هستم خواهش میکنم راهنمایی کنید

// statements_lock.cs
using System;
using System.Threading;

class ThreadTest
{
public void RunMe()
{
Console.WriteLine("RunMe called");
}

static void Main()
{
ThreadTest b = new ThreadTest();
Thread t = new Thread(b.RunMe);
t.Start();
}
}



// statements_lock2.cs
using System;
using System.Threading;

class Account
{
private Object thisLock = new Object();
int balance;

Random r = new Random();

public Account(int initial)
{
balance = initial;
}

int Withdraw(int amount)
{

// This condition will never be true unless the lock statement
// is commented out:
if (balance < 0)
{
throw new Exception("Negative Balance");
}

// Comment out the next line to see the effect of leaving out
// the lock keyword:
lock(thisLock)
{
if (balance >= amount)
{
Console.WriteLine("Balance before Withdrawal : " + balance);
Console.WriteLine("Amount to Withdraw : -" + amount);
balance = balance - amount;
Console.WriteLine("Balance after Withdrawal : " + balance);
return amount;
}
else
{
return 0; // transaction rejected
}
}
}

public void DoTransactions()
{
for (int i = 0; i < 100; i++)
{
Withdraw(r.Next(1, 100));
}
}
}

class Test
{
static void Main()
{
Thread[] threads = new Thread[10];
Account acc = new Account(1000);
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();
}
}
}

sia_2007
سه شنبه 15 تیر 1389, 18:42 عصر
تو اولی Multi Threading رو به روش عهد بوق پیاده سازی کرده؛
دیگه حوصله نکردم دومی رو بخونم.

proreza
سه شنبه 15 تیر 1389, 19:04 عصر
ممنون دوست عزیز
میشه با چند تکه کد ساده
انحصار متقابل(Mutual exclusion):وقتی برنامه ای در ناحیه بحرانی هست برنامه ای دیگر نمیتواند وارد ناحیه بحرانی شود
شرط پیشروی(Progress) :پروسه اول که آماده ورود به ناحیه بحرانی خود است فقط زمانی پروسه دوم میتواند مانع ورود پروسه اول شود که flag[j]=true باشد(یعنی در ناحیه باقیمانده نباشد وداوطلب ورود باشد)
این دوتا شرط تو کد ها باشن اگر بزارید ممنون میشم چون میخواهم با طرز کارشون آشنا بشم