-
2016/05/31, 14:31 #1
الگوریتم خوانندگان و نویسندگان با سمافور به صورت چند نخی در زبان سی شارپ
سلام دوستان دنبال برنامه مسئله خوانندگان و نویسندگان با سمافور به صورت چند نخی در زبان سی شارپ هستم لطفا اگه کدش رو داره ممنون میشم در اختیارم قرار بدید خیلی نیاز دارم برای درس سیستم عامل می خوام.
ویرایش توسط CodeDEV : 2016/05/31 در ساعت 15:35
-
2016/05/31, 15:47 #2
سورس برنامه خوانندگان و نویسندگان با سمافور را که به صورت Multi-Thread نوشته شده در زبان سی شارپ رو آماده کرده ام و از لینک زیر می تونید دانلود کنید.
لینک دانلود:
-
1
-
2016/05/31, 15:57 #3
برای مسئله خوانندگان و نویسندگان از سورس کد زیر هم می تونید استفاده کنید ولی این مورد به صورت کنسولی است.
کد:using System; using System; using System.Threading; using System.Collections.Generic; namespace ReaderWriterLockSlimTest { /// <summary> /// This simple class demonstrates the usage a Reader/Writer /// situation, using the ReaderWriterLockSlim class /// </summary> class Program { static ReaderWriterLockSlim rw = new ReaderWriterLockSlim(); static List<int> items = new List<int>(); static Random rand = new Random(); static void Main(string[] args) { //start some readers new Thread(Read).Start("R1"); new Thread(Read).Start("R2"); new Thread(Read).Start("R3"); //start some writers new Thread(Write).Start("W1"); new Thread(Write).Start("W2"); } static void Read(object threadID) { //do read while (true) { try { rw.EnterReadLock(); Console.WriteLine("Thread " + threadID + " reading common source"); foreach (int i in items) Thread.Sleep(10); } finally { rw.ExitReadLock(); } } } static void Write(object threadID) { //do write while (true) { int newNumber = GetRandom(100); try { rw.EnterWriteLock(); items.Add(newNumber); } finally { rw.ExitWriteLock(); Console.WriteLine("Thread " + threadID + " added " + newNumber); Thread.Sleep(100); } } } static int GetRandom(int max) { //lock on the Random object lock (rand) return rand.Next(max); } } }