wywołanie metody synchronicznie z blokowanie

0

W podręczniku do nauki c# znalazłem pewien przykład, lecz nie potrafię go do końca zrozumieć. Skoro wywołanie metody następuję synchronicznie to działają w niej dwa wątki ? Bo jeśli dwie czynności wykonują się w tym samym czasie to mamy do czynienia z dwoma wątkami ?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
using System.Threading;

namespace Test
{
    static class Program
    {

        public delegate int BinaryOp(int x, int y);
        
        static int Add(int x, int y)
        {
            Console.WriteLine("Add() invoked on thread {0}.",
                Thread.CurrentThread.ManagedThreadId);

            Thread.Sleep(5000););
            return x + y;
        }      
        static void Main(string[] args)
        {
            Console.WriteLine("Main() invoked on thread {0}.",
                Thread.CurrentThread.ManagedThreadId);

            BinaryOp b = new BinaryOp(Add);
            int answer = b(10, 10);
            Console.WriteLine("10 + 10 is {0}", answer);

            Console.ReadLine();
        }
    }
}

0

A które dwie czynności wykonują się tutaj jednocześnie?

0
  1. Ten kod się nie skompiluje
  2. Jest tu tylko główny wątek aplikacji.
0

Czemu się nie skompiluje ? U mnie program bez błędów się odpala.

Nie wiem czemu w książce jest napisane, że metoda add() wykonuje się synchronicznie. Może mi ktoś to wyjaśnić ? Wydaje mi się, że wykonywana jest asynchronicznie.

0

W metodzie Add w tej linijce:

Thread.Sleep(5000););

Powinien wyjść błąd - za dużo o jeden nawias i średnik.

Asynchroniczne wywołanie metody to takie wywołanie, że nie czekamy na jej wynik, tylko idziemy dalej. Czyli np. odpalamy metodę w innym wątku. Synchroniczne wywołanie to takie wywołanie, kiedy czekamy na zakończenie metody. Czyli standardowo. Bez użycia wątków.

Metoda Add nie jest wywoływana w żadnym nowym wątku, więc jest synchroniczna.

1 użytkowników online, w tym zalogowanych: 0, gości: 1