פורום תכנות

עזרה-חייבת תשובה בc#

בהנהלת: בינתיים. , 11111 , משה
כ"א חשוון 11:07

ולקח לי קצת זמן לפתור את זה.

 

הסיבה שאת לא מקבלת תמיד את אותו המספר- כי ה טרדים עובדים באותו הזמן, ולכן חלק מהפעולות מתבזבזות.

 

הפתרון - לשים נעילת טרדים על החלק הקריטי (counter++)  
כך שבוודאות חלק קוד זה ירוץ תמיד בזמן משלו.

 

אז אלו התוספות שלי בקוד.

 

נ.ב.

 

הוספתי את 

      Thread.Sleep(TimeSpan.Zero);  

כדי לשחרר את הטריד הנוכחי, אחרת - מה שיתקבל זה ש טריד 1 רץ כל הזמן ורק אחרי שהוא מסיים הטריד השני מתחיל.

ואת זה אנחנו לא רוצים.

 

(הוספתי משתנה ID לטרדים, כדי שאוכל להדפיס למסך הודעות ולדעת מאיזה טריד הדפסתי אותם.)

 

 

class Program
    {
        static int counter { get; set; }
        static object locker = new object();
        public static void threadProc(int id)
        {
            for (int i = 0; i < 10000; i++)
            {               
                lock(locker)
                {
                    counter++;


                }
                Thread.Sleep(TimeSpan.Zero);               
            } 
        }
         static void Main(string[] args)
        {
            var te1 = Task.Run(() => threadProc(1));
            var te2 = Task.Run(() => threadProc(2));
            Task.WhenAll    (new[] { te1, te2 }).Wait();
            Console.WriteLine(counter);
            Console.ReadKey();
        }
    }

כ"א חשוון 11:09

כי כבר יש לך שאלות בפורום מלפני הרבה זמן.

 

בכל אופן, בשמחה.

 

כ"א חשוון 11:10


כ"א חשוון 11:11


כ"א חשוון 11:11
כ"א חשוון 11:12

 

קודם תעני על זה בעברית.

 

אחר כך תנסי ליישם את זה C#

 

 

י"ז טבת 12:35
לא הכניסו בה אלמנט של רנדום, ככה שכל פעם היא תחזיר לוח שונה. הפונקציה יכולה להחזיר מחרוזת קבועה שמתארת את הלוח כמו שהם רצו...
י"ח טבת 00:13
... אנונימי

נו נו, עוד שורה לפני שמכניסים ללולאה , פחות שורה, זה לא יהפוך את הקוד למתוחכם, הקוד הזה די פשוט בכל מקרה

חוץ מזה- נראה לי שבכל מקרה הלוח יוצא אותו דבר (אם יהפכו אותו ויסובבו אותו)

י"ח טבת 12:28
.. אנונימי

איך אפשר לכתוב אלגוריתם שייתן פיתרון נכון ללא לולאה?

י"ח טבת 14:46

יש גם לולאה וגם רקורסיה. אם אני זוכר נכון.

י"ח טבת 15:27
אה נכון אנונימי

עדיין, הוספה של פרמטר רנדום כדי להחליט באיזה שורה המלכה הראשונה תמוקם לא משנה הרבה

י"ח טבת 15:32
אוי נו במ'ת אנונימי אחרונה

מתחכם אחד

גם רושמים אלגוריתם שממקם את המלכות כל פעם באותו מקום

(כי המלכה הראשונה מוצבת תמיד ב[0][0]) ואפשר להשיג את אותה תוצאה בהדפסה של מחרוזת ,זה לא חכמה, כל הרעיון הוא החשיבה האלגוריתמית

ג' כסלו 12:32
באופן עצמאי או עם מוסד לימודים?
ג' כסלו 15:24