mmoustaf 101 Жалоба Опубликовано: 11 л Бугогго Твое объяснение неверно,а еще мнит себя вумным Я сишарпа не знаю. И этих ваших лямбда выражений тоже. Если лямбда выражения ()=>const запрещены компилятором - это одно. Если они не запрещены, то в качестве одного из вариантов может проскочить неявное преобразование типа или разные способы хранения в памяти переменных и констант. Но пофиг. Пользы из этого ни на грош. Оставим это красноглазым задротам. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mmoustaf 101 Жалоба Опубликовано: 11 л Не надо пускать пыль в глаза эвфемиазмами в стыдливых попытках облагородить давно известное русское „тяп-ляп“. Повбiвав би! Понятное дело, что в отличие от аджайлов типичное концепция "сожри как можно больше бабла, провафли сроки и ничего не сделай" гораздо лучше. Поскольку позволяет дожить до пенсии особо не напрягаясь Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mmoustaf 101 Жалоба Опубликовано: 11 л Все версии неверные Ну значит взаимоблокировки какие-нибудь в конструкторе статическом, рейс кондишн Nobody cares Я ж говорю этого вашего задротского сишарпа я не знаю Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
_nw_ 1537 Жалоба Опубликовано: 11 л Что в джаваскрипте делает *!*... */!* ?? Млин не гуглитцо эта хрень никаким поиском Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
kluGe 1 Жалоба Опубликовано: 11 л Ну и до кучи для особо вумных небольшая задача class CrazyType { public static Func<int> SF = () => 42; public static readonly int Foo = GetFoo(); private static int GetFoo() { return Task<int>.Factory.StartNew(SF).Result; } } class CrazyType2 { public static readonly int Foo = GetFoo(); public static Func<int> SF = () => 42; private static int GetFoo() { return Task<int>.Factory.StartNew(SF).Result; } } Сойдёт за ответ? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mmoustaf 101 Жалоба Опубликовано: 11 л А объяснение-то где? Я ж тебе написал - взаимоблокировки в статическом конструкторе например Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mmoustaf 101 Жалоба Опубликовано: 11 л Какие блокировки, чего блокировки, где блокировки? Программерам нужна конкретика. Ты на техсовете также многозначительно-бесполезно отвечаешь Нет, на техсовете, я обычно однозначно говорю, что люди которым нужно все разжевать - мудаки. Поэтому каждый год я увеличиваю свою з/п на 30% Первый поток видит обращение к статическому члену типа CrazyType значит должен его проинициализировать Потом наверное захватывает внутреннюю блокировку чтобы вызвать конструктор При вызове вызывается гетфу Потом в теле гетфу мы запускаем еще один таск И ждем завершения В результате стартует новая задача, а там вызывается тот же самый метод. Повторяем описанное выше из второго потока. При захвате блокировки во второй итерации залипаем, поскольку ее первый поток не отпустил. Рэйс кондишн Наберут по объявлению Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mmoustaf 101 Жалоба Опубликовано: 11 л Перепишите на нормальном интерпретируемом языке. Похоже, что Игорь просто на собеседовании сидит. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mmoustaf 101 Жалоба Опубликовано: 11 л 2-й работающий вариант делает все тоже самое. Так почему же он работает? Я отвечал на вопрос Вот это не работает. Объясните почему. Тебе нужен ответ и на вопрос, почему первый вариант работает? Я тебе его нарисую. Только я не понимаю зачем? Тебя на новую работу не берут? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
kluGe 1 Жалоба Опубликовано: 11 л Нет Там можно придумать кучу способов, чтобы все работало. А объяснение-то где? Так в моей версии оно тоже не работает Только я переписал проще. А объяснение звучит слишком нудно, не интересно и в нём есть слова вроде "замыкания" Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mmoustaf 101 Жалоба Опубликовано: 11 л 2-й работающий вариант делает все тоже самое. Он делает не то же самое. Извини. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mmoustaf 101 Жалоба Опубликовано: 11 л Короче во втором случае опыт программирования на с++ подсказывает мне, что тут виноват компилятор. Он генерирует для второго потока вложенный класс замыкания, статический конструктор которого вызывается независимо. И блокировки нет. Программерам нужна конкретика. Не путай программистов и быдлокодеров. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
URI 0 Жалоба Опубликовано: 11 л С праздником Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
maksims 1 Жалоба Опубликовано: 11 л Одному мне кажется, что тут кое-кто не очень понимает потоковые модели? Нутам, что на разных ОС они разные. А еще мне кажется, что ктото путает понятия "поток" и "задача" =) Но, зато различает быдло- и аристо-кодеров =) Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mmoustaf 101 Жалоба Опубликовано: 11 л Одному мне кажется, что тут кое-кто не очень понимает потоковые модели? Нутам, что на разных ОС они разные. А чо сишарп он на какой-то еще ос кроме виндовз работает? При чем тут понимание потоковых моделей? Вопрос Игоря он про конкретную реализацию блокировок и замыканий в конкретном компиляторе. А еще мне кажется, что ктото путает понятия "поток" и "задача" =) При чем тут понятия "потока" и "задачи" вообще? От этого изменится правильность моего объяснения? Под словом таска имеется ввиду класс Task Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mmoustaf 101 Жалоба Опубликовано: 11 л Теперь да. Ааа.. Моно и все такое - это что ли? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mmoustaf 101 Жалоба Опубликовано: 11 л Да. Я сам не видел, но пацаны рассказывали, что работает плохо. Ну я тебе тоже не скажу, я с моно пару раз поигрался и бросил. Согласно парадоксу блаба я обошелся без него. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
kluGe 1 Жалоба Опубликовано: 11 л Все-то он знает Я незнаю куда девается NRE И это начинает походить на баг в TaskScheduler-e Ибо даже если добавить в конфиг бросание Unobserved исключений, процесс не дохнет Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mmoustaf 101 Жалоба Опубликовано: 11 л Да он просто никому не нужен. На *nix такой зоопарк языков, что С# погоды не делает. Ну ты ж понимаешь. Знаешь сишарп - умный. Не знаешь - лох. Раньше так с джавой было, до того с плюсами. Скоро еще напридумывают, мож хаскель в моду войдет. Или еще какой брэйнфак Я незнаю куда девается NRE И это начинает походить на баг в TaskScheduler-e Ибо даже если добавить в конфиг бросание Unobserved исключений, процесс не дохнет А юзерстори если распилить подробнее? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
kluGe 1 Жалоба Опубликовано: 11 л А юзерстори если распилить подробнее? Эээ, кого распилить? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
sergant 3 Жалоба Опубликовано: 11 л $ diff -b /tmp/1 /tmp/2 11,12c11 < int x = 42; < return Task<int>.Factory.StartNew(() => x).Result; --- > return Task<int>.Factory.StartNew (() => 42).Result; Как у C# с пробелами? Игнорирует? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mmoustaf 101 Жалоба Опубликовано: 11 л Эээ, кого распилить? Ну в смысле че именно происходит и в каком участке кода? Или ты вот прям так нулЁвое исключение кидаешь из любого участка кода и оно непонятно кем обрабатывается (или не обрабатывается, но приложение не падает)? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
kluGe 1 Жалоба Опубликовано: 11 л Ну в смысле че именно происходит и в каком участке кода? Или ты вот прям так нулЁвое исключение кидаешь из любого участка кода и оно непонятно кем обрабатывается (или не обрабатывается, но приложение не падает)? Это в продолжение задачки Игоря. return Task<int>.Factory.StartNew(() => 42).Result; В статическом конструкторе такой вызов приводит к тому, что в StartNew передается указатель на метод который ещё не проинициализирован. По спецификации это должен быть указатель на null... но если передать туда null, то мы успешно падаем с NRE, а если передать туда лямбду то этого не происходит и запущенный Task становится вечным. Отбой! Помутнение нашло Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mmoustaf 101 Жалоба Опубликовано: 11 л Отбой! Помутнение нашло вот вот. Короче пора разделить тему. Занимательное программирование отдельно. Остальную фигню отдельно Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mmoustaf 101 Жалоба Опубликовано: 11 л А накидайте заданий со старых гуглолимпиад что ли? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах