Yahoo Clever wird am 4. Mai 2021 (Eastern Time, Zeitzone US-Ostküste) eingestellt. Ab dem 20. April 2021 (Eastern Time) ist die Website von Yahoo Clever nur noch im reinen Lesemodus verfügbar. Andere Yahoo Produkte oder Dienste oder Ihr Yahoo Account sind von diesen Änderungen nicht betroffen. Auf dieser Hilfeseite finden Sie weitere Informationen zur Einstellung von Yahoo Clever und dazu, wie Sie Ihre Daten herunterladen.

C# Unsafe Thread Monitoring?

How does the Monitoring class solve the unsafe thread problem in the following example:

class ThreadUnsafe {

static int val1, val2;

static void Go(){

if (val2 != 0) Console.WriteLine( val1 / val2);

val2=0;}

}

Update:

Monitor class I should say.

1 Antwort

Relevanz
  • ?
    Lv 5
    vor 6 Jahren

    The variable val2 is not local to the function Go(). So if more than one thread calls Go you could get a division by 0. For example:

    Thread 1: Does the test "if(val2 != 0)" but then it gets swapped out, and

    Thread 2: Is started, calls Go(), does the if, the write, and sets val2=0. Then Thread 2 gets swapped out and

    Thread 1 is restarted, it goes to do the "Console.WriteLine(val1/val2)" but since Thread 2 set val2 to 0, it gets a divide by 0 fault.

Haben Sie noch Fragen? Jetzt beantworten lassen.