Перейти к содержимому
Форумы SkyCentre Прыжки с парашютом
Igor

Программное западло - прораммисты трут здесь

Recommended Posts

Бугогго Твое объяснение неверно,а еще мнит себя вумным :mosking:

Я сишарпа не знаю.

И этих ваших лямбда выражений тоже.

Если лямбда выражения ()=>const запрещены компилятором - это одно.

Если они не запрещены, то в качестве одного из вариантов может проскочить неявное преобразование типа или разные способы хранения в памяти переменных и констант.

Но пофиг.

Пользы из этого ни на грош.

Оставим это красноглазым задротам.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Не надо пускать пыль в глаза эвфемиазмами в стыдливых попытках облагородить давно известное русское „тяп-ляп“.

Повбiвав би!

Понятное дело, что в отличие от аджайлов типичное концепция "сожри как можно больше бабла, провафли сроки и ничего не сделай" гораздо лучше.

Поскольку позволяет дожить до пенсии особо не напрягаясь

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Все версии неверные :)

Ну значит взаимоблокировки какие-нибудь в конструкторе статическом, рейс кондишн

Nobody cares

Я ж говорю этого вашего задротского сишарпа я не знаю

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Что в джаваскрипте делает *!*... */!* ??

Млин не гуглитцо эта хрень никаким поиском

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Ну и до кучи для особо вумных небольшая задача :)

    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;
        }
    }

Сойдёт за ответ? ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
А объяснение-то где?

Я ж тебе написал - взаимоблокировки в статическом конструкторе например

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Какие блокировки, чего блокировки, где блокировки? Программерам нужна конкретика. Ты на техсовете также многозначительно-бесполезно отвечаешь :)

Нет, на техсовете, я обычно однозначно говорю, что люди которым нужно все разжевать - мудаки.

Поэтому каждый год я увеличиваю свою з/п на 30%

Первый поток видит обращение к статическому члену типа CrazyType значит должен его проинициализировать

Потом наверное захватывает внутреннюю блокировку чтобы вызвать конструктор

При вызове вызывается гетфу

Потом в теле гетфу мы запускаем еще один таск

И ждем завершения

В результате стартует новая задача, а там вызывается тот же самый метод.

Повторяем описанное выше из второго потока.

При захвате блокировки во второй итерации залипаем, поскольку ее первый поток не отпустил.

Рэйс кондишн

Наберут по объявлению

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Перепишите на нормальном интерпретируемом языке.

Похоже, что Игорь просто на собеседовании сидит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2-й работающий вариант делает все тоже самое. Так почему же он работает?

Я отвечал на вопрос

Вот это не работает. Объясните почему.

Тебе нужен ответ и на вопрос, почему первый вариант работает?

Я тебе его нарисую. Только я не понимаю зачем?

Тебя на новую работу не берут?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Нет :) Там можно придумать кучу способов, чтобы все работало. А объяснение-то где?

Так в моей версии оно тоже не работает :) Только я переписал проще. А объяснение звучит слишком нудно, не интересно и в нём есть слова вроде "замыкания" :lazy:

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2-й работающий вариант делает все тоже самое.

Он делает не то же самое. Извини.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Короче во втором случае опыт программирования на с++ подсказывает мне, что тут виноват компилятор.

Он генерирует для второго потока вложенный класс замыкания, статический конструктор которого вызывается независимо. И блокировки нет.

Программерам нужна конкретика.

Не путай программистов и быдлокодеров.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

67013_original.jpg

С праздником :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Одному мне кажется, что тут кое-кто не очень понимает потоковые модели?

Нутам, что на разных ОС они разные.

А еще мне кажется, что ктото путает понятия "поток" и "задача" =)

Но, зато различает быдло- и аристо-кодеров =)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Одному мне кажется, что тут кое-кто не очень понимает потоковые модели?

Нутам, что на разных ОС они разные.

А чо сишарп он на какой-то еще ос кроме виндовз работает?

При чем тут понимание потоковых моделей?

Вопрос Игоря он про конкретную реализацию блокировок и замыканий в конкретном компиляторе.

А еще мне кажется, что ктото путает понятия "поток" и "задача" =)

При чем тут понятия "потока" и "задачи" вообще?

От этого изменится правильность моего объяснения?

Под словом таска имеется ввиду класс Task

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Теперь да.

Ааа.. Моно и все такое - это что ли?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Да. Я сам не видел, но пацаны рассказывали, что работает плохо.

Ну я тебе тоже не скажу, я с моно пару раз поигрался и бросил.

Согласно парадоксу блаба я обошелся без него.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Все-то он знает :)

Я незнаю куда девается NRE :(

И это начинает походить на баг в TaskScheduler-e

Ибо даже если добавить в конфиг бросание Unobserved исключений, процесс не дохнет

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Да он просто никому не нужен. На *nix такой зоопарк языков, что С# погоды не делает.

Ну ты ж понимаешь.

Знаешь сишарп - умный.

Не знаешь - лох.

Раньше так с джавой было, до того с плюсами.

Скоро еще напридумывают, мож хаскель в моду войдет.

Или еще какой брэйнфак

Я незнаю куда девается NRE :(

И это начинает походить на баг в TaskScheduler-e

Ибо даже если добавить в конфиг бросание Unobserved исключений, процесс не дохнет

А юзерстори если распилить подробнее?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
А юзерстори если распилить подробнее?

Эээ, кого распилить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

$ 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# с пробелами? Игнорирует?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Эээ, кого распилить?

Ну в смысле че именно происходит и в каком участке кода?

Или ты вот прям так нулЁвое исключение кидаешь из любого участка кода и оно непонятно кем обрабатывается (или не обрабатывается, но приложение не падает)?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Ну в смысле че именно происходит и в каком участке кода?

Или ты вот прям так нулЁвое исключение кидаешь из любого участка кода и оно непонятно кем обрабатывается (или не обрабатывается, но приложение не падает)?

Это в продолжение задачки Игоря.

return Task<int>.Factory.StartNew(() => 42).Result;

В статическом конструкторе такой вызов приводит к тому, что в StartNew передается указатель на метод который ещё не проинициализирован. По спецификации это должен быть указатель на null... но если передать туда null, то мы успешно падаем с NRE, а если передать туда лямбду то этого не происходит и запущенный Task становится вечным.

Отбой! Помутнение нашло :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Отбой! Помутнение нашло :)

вот вот.

Короче пора разделить тему.

Занимательное программирование отдельно.

Остальную фигню отдельно

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А накидайте заданий со старых гуглолимпиад что ли?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×
×
  • Создать...