[c#] Синхронизация потоков

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by _Spamer_, 26 Jul 2013.

  1. _Spamer_

    _Spamer_ Elder - Старейшина

    Joined:
    3 Feb 2009
    Messages:
    83
    Likes Received:
    140
    Reputations:
    16
    Здравствуйте. Интересует решение такой вот задачи.
    Допустим есть 2 метода:

    Code:
    public string method_A()
    {
         //some code
         return string url;
    }
    
    public void method_B(string url)
    {}
    Мне нужно запустить в 1 потоке метод А, после его выполнения он передает допустим в 200 потоков метода Б string url и сам останавливается. Когда один из 200 потоков получает информацию что при обращении к url ответ 404 error, все 200 потоков берут паузу, опять запускается 1 поток method_A получaem новый url и 200 потоков продолжают работу с новым url.

    Подскажите пожалуйста как это все можно реализовать. Заранее спасибо
     
    #1 _Spamer_, 26 Jul 2013
    Last edited: 26 Jul 2013
  2. Euler

    Euler New Member

    Joined:
    9 Sep 2012
    Messages:
    30
    Likes Received:
    0
    Reputations:
    0
    А тут без вариантов, когда один поток получил 404, то остальные скорее всего уже посылают запрос или ждут ответ. Ну а вообще для подобных целей есть статические переменные.
    Тут только нужно быть внимательным с синхронизацией, очень частая ошибка код вида(на си, синтаксис C# плохо помню):
    Code:
    static bool flag = true;
    //...
    EnterCriticalSection(&cs);
    if(!flag)
       return;
    LeaveCriticalSection(&cs)
    и все потоки повисли из-за критической секции.