Перейти к публикации
  • Сейчас на странице   Всего пользователей: 6   (0 пользователей, 6 гостей)

Rooster

Программирование[11]

var  

265 пользователей проголосовало

У вас нет прав на голосование в этом опросе, или на просмотр результатов опроса. Пожалуйста, войдите или зарегистрируйтесь для голосования в опросе.

Рекомендованные сообщения

GoldRobot написал 57 минут назад:
Grohuf написал 15 часов назад:
GoldRobot написал 15 часов назад:

Этой картинке сто лет в обед, ее все знают. Я не понял к чему ты это.

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

Ну если использовать локи так, как ты там расписывал, то конечно. При нормальном программировании в 99% случаев достаточно спинлока даже без фоллбэка на мьютекс.

Вот рассмотрим простейшую концепцию мессейдж лупа. Это просто тред с очередью задач. Когда очередь пуста, естественно, поток должен засыпать, он не должен что-то там молоть, так как очередь может быть пуста длительное время. Кроме того, если задачи он обрабатывает разного рода, то потеря кэша для него не так уж страшна.

Но вот потоки, которые будут класть задачи в очередь, засыпать не должны. Потому что постановка задачи в конец очереди занимает минимальное время. И тут достаточно спинлока. Поэтому и получается, что очередь должна быть защищена спинлоком, если она пуста, то поток просто сбрасывает событие и засыпает на нем. Как только в очередь будет положена первая задача, событие переходит в сигнальное состояние и поток просыпается.

Ты похоже опять про разное. "что-то там молотить" это о дерганья атомиков в спинлоке. 

Брат, прочитай внимательнее что я написал пожалуйста, и что линух написал. Ладно голдробот ничего не понимает, потому что у него зп два огра, но линух то секет? Или нет?

Хуйня там написана, о чем я выше уже сказал.

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


Ссылка на сообщение
Just.Doit написал 05.06.2024 в 15:46:

ссылка с таймкодом с примером:

 

 

Кто нить смог воспроизвезти этот случай?

 

image.png.53f8f3a5de66213e7e08551c9edfd64d.png


towBCf6.pngimage.png.6f88ac9ad688355eb803ba0b32e309ca.pngimage.png.c05354238865437022b3e4a97a835dbd.pngimage.png.0e8329f2b07e208ae8ef4e3f6878d126.png

 

 

 

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


Ссылка на сообщение
Just.Doit написал 2 часа назад:
Drakonian написал 4 часа назад:

Челы реально верят, что возможно написать тест который 100% отловят ошибки concurrency?
Так буквально это ошибки которые рандомно появляются и ваш тест их вообще может никогда не отловить


О чем спор то идет теперь?)))

а ты можешь написать тест который 100% отловят ошибки не конкаренси?

и тут и там гарантий нет. есть только здравый смысл и инженерные практики по снижению вероятностей проблем

да нет конечно
но какие-то ошибки отловить намного легче чем другие
если ошибка появляется случайно то её впринципе невозможно гарантировано отловить, о чем и толкую

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


Ссылка на сообщение
Drakonian написал 7 часов назад:

но какие-то ошибки отловить намного легче чем другие

 

Даааа

 

А какие то баги фиксить намного сложнее чем другие

 

Вот ведь дилемма...


towBCf6.pngimage.png.6f88ac9ad688355eb803ba0b32e309ca.pngimage.png.c05354238865437022b3e4a97a835dbd.pngimage.png.0e8329f2b07e208ae8ef4e3f6878d126.png

 

 

 

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


Ссылка на сообщение
Vova написал 47 минут назад:
Drakonian написал 8 часов назад:

но какие-то ошибки отловить намного легче чем другие

 

Даааа

 

А какие то баги фиксить намного сложнее чем другие

 

Вот ведь дилемма...

сос мыслом

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


Ссылка на сообщение

c++

Скрытый текст

 

2024

 

Скрытый текст

сплита для строк нет

 

 

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


Ссылка на сообщение
(изменено)

Чел ты :chel:

https://en.cppreference.com/w/cpp/ranges/split_view


Изменено пользователем GoldRobot
Olololnet понравилось это

ward написал 04.01.2022 в 02:54:

Hades для стада долбоебичей которые прокликивали Дэш и думали ебать они в артхаузнвй рогалик играют, не такие как все.

mazt3r написал 20.09.2019 в 11:27:

ласт оф ас - хуета для лисят и прочих мальчиков с вагиной между ног.

 

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


Ссылка на сообщение
(изменено)
GoldRobot написал 2 часа назад:

 

Всего то надо было подождать каких-то 45 лет

 

Теперь можем кайфовать и разбивать текст запятыми :EZ:

 

Надо всего лишь проапгрейдить всю легаси кодобазу до с++23 :kaifstelish:


Изменено пользователем Vova

towBCf6.pngimage.png.6f88ac9ad688355eb803ba0b32e309ca.pngimage.png.c05354238865437022b3e4a97a835dbd.pngimage.png.0e8329f2b07e208ae8ef4e3f6878d126.png

 

 

 

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


Ссылка на сообщение
Vova написал 12 часов назад:
Just.Doit написал 06.06.2024 в 01:46:

ссылка с таймкодом с примером:

 

 

Кто нить смог воспроизвезти этот случай?

 

image.png.53f8f3a5de66213e7e08551c9edfd64d.png

https://github.com/lantalex/jpoint-2023-semantics

Там все есть для воспроизведения. 

Правда есть нюансы описаные автором вроде
 

Цитата

Потенциальный конфликт в итогах соревнования при использовании acquire-release семантики.
К сожалению, на доступном мне оборудовании конфликт не воспроизводится, но скорее всего случится на архитектуре PowerPC

 

Но ты можешь запустить 

./gradlew jcstress --tests  "AcquireReleaseSemantic_NoConsensus_Dekker"

Я получил
    0, 0    2,299,189    0.23%   Acceptable  No winner, let's race again
    0, 1  300,395,588   30.16%   Acceptable  Blue cat is winner
    1, 0  348,571,640   34.99%   Acceptable  Red panda is winner
    1, 1  344,825,487   34.62%  Interesting  Conflict

 

На коде который уже похож на твой С++ такого нет 

 

./gradlew jcstress --tests  "AcquireReleaseSemantic_NoConsensus"

   1, 1            0    0.00%  Interesting  Conflict

 

Они отличаются тем что во втором случае запись идет в отдельном треде а в первом всего два

 @Actor
    public void panda(II_Result r) {
        RED.setRelease(this, 1);

        //logic of Referee#1 is here
        if ((int) RED.getAcquire(this) == 1 && (int) BLUE.getAcquire(this) == 0) {
            //red panda is the winner
            r.r1 = 1;
        }
    }

    @Actor
    public void cat(II_Result r) {
        BLUE.setRelease(this, 1);

        //logic of Referee#2 is here
        if ((int) BLUE.getAcquire(this) == 1 && (int) RED.getAcquire(this) == 0) {
            //blue cat is the winner
            r.r2 = 1;
        }
    }

 

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


Ссылка на сообщение
(изменено)
Index написал 1 час назад:

 


./gradlew jcstress --tests  "AcquireReleaseSemantic_NoConsensus"

   1, 1            0    0.00%  Interesting  Conflict

 

То есть как я и сказал код из презентации не воспроизводится

 

Что в очередной раз доказывает что я дурак и нихуя не разбираюсь в теме в отличие от тех кто вчера посмотрел какой-то видос с Ютуба

 

 Just.Doit написал 06.06.2024 в 00:30:

 

Vova написал 05.06.2024 в 17:01:

Так что такого что он описал случиться не может

АЗХАХАХАХАХАХ

иди нахуй

бля вова

лучше бы ты не лез

 

Just.Doit написал 06.06.2024 в 00:30:

УВ-уровень Вовы


Изменено пользователем Vova

towBCf6.pngimage.png.6f88ac9ad688355eb803ba0b32e309ca.pngimage.png.c05354238865437022b3e4a97a835dbd.pngimage.png.0e8329f2b07e208ae8ef4e3f6878d126.png

 

 

 

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


Ссылка на сообщение

Там два варианта кода, один с 4-мя потоками (как у тебя), один с двумя. 

Второй воспроизводится (там где сетают в треде рефери).

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


Ссылка на сообщение
(изменено)
Index написал 35 минут назад:

 


 @Actor
    public void panda(II_Result r) {
        RED.setRelease(this, 1);

        //logic of Referee#1 is here
        if ((int) RED.getAcquire(this) == 1 && (int) BLUE.getAcquire(this) == 0) {
            //red panda is the winner
            r.r1 = 1;
        }
    }

    @Actor
    public void cat(II_Result r) {
        BLUE.setRelease(this, 1);

        //logic of Referee#2 is here
        if ((int) BLUE.getAcquire(this) == 1 && (int) RED.getAcquire(this) == 0) {
            //blue cat is the winner
            r.r2 = 1;
        }
    }

 

 

Оооо прикольно а можно было бы еще такой код затестить тк нахуй проверять condition который всегда true

 

 @Actor
    public void panda(II_Result r) {
        RED.setRelease(this, 1);

        //logic of Referee#1 is here
        if ((int) BLUE.getAcquire(this) == 0) {
            //red panda is the winner
            r.r1 = 1;
        }
    }

    @Actor
    public void cat(II_Result r) {
        BLUE.setRelease(this, 1);

        //logic of Referee#2 is here
        if ((int) RED.getAcquire(this) == 0) {
            //blue cat is the winner
            r.r2 = 1;
        }
    }

 

А потом почему бы не сразу затестить это - один хуй переменная не используется внутри треда

 

 @Actor
    public void panda(II_Result r) {
        //logic of Referee#1 is here
        if ((int) BLUE.getAcquire(this) == 0) {
            //red panda is the winner
            r.r1 = 1;
        }

        RED.setRelease(this, 1);
    }

    @Actor
    public void cat(II_Result r) {
        //logic of Referee#2 is here
        if ((int) RED.getAcquire(this) == 0) {
            //blue cat is the winner
            r.r2 = 1;
        }

        BLUE.setRelease(this, 1);
    }

 

Index написал 5 минут назад:

Там два варианта кода, один с 4-мя потоками (как у тебя), один с двумя. 

Второй воспроизводится (там где сетают в треде рефери).

 

В презентации было 4 треда - хватит мне мозги пудрить

 

image.png.b73111d48da5fc4c99f53d1ed4a3cd15.png


Изменено пользователем Vova

towBCf6.pngimage.png.6f88ac9ad688355eb803ba0b32e309ca.pngimage.png.c05354238865437022b3e4a97a835dbd.pngimage.png.0e8329f2b07e208ae8ef4e3f6878d126.png

 

 

 

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


Ссылка на сообщение
(изменено)

о а мне вот ещё интересно как интернет распределяется мой? Ну вот допустим у меня включена дота и больше ничего, это же не значит что весь мой трафик уйдёт на доту, но при этом хотелось бы чтобы уходил. Типа я так понимаю что интернет 100мб что 700мб пинг одинаковый будет?


Изменено пользователем phosphorique

гиены скалятся — нахуй гиен
МОЙ ТГК https://t.me/phorphoriquetg

 

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


Ссылка на сообщение

написал заявление в сбере на 21:pepehands:

27 выхожу в вк :EZ:

 

 

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


Ссылка на сообщение
godspeed написал 4 часа назад:

написал заявление в сбере на 21:pepehands:

27 выхожу в вк :EZ:

 

 

вот бля, а я во внутреннюю структуру перехожу, буду в офис ездить, думал написать курить ходить 

godspeed понравилось это

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


Ссылка на сообщение
godspeed написал 4 часа назад:

написал заявление в сбере на 21:pepehands:

27 выхожу в вк :EZ:

 

 

скок деняк

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


Ссылка на сообщение
godspeed написал 8 часов назад:

написал заявление в сбере на 21:pepehands:

27 выхожу в вк :EZ:

 

 

пральна, вк хуже уже не будет, можно и на зп присесть


гиены скалятся — нахуй гиен
МОЙ ТГК https://t.me/phorphoriquetg

 

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


Ссылка на сообщение
madvlaydin написал 6 часов назад:
godspeed написал 10 часов назад:

написал заявление в сбере на 21:pepehands:

27 выхожу в вк :EZ:

 

 

скок деняк

205 на руки, но я джуняра

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


Ссылка на сообщение
godspeed написал 36 минут назад:
madvlaydin написал 6 часов назад:
godspeed написал 11 часов назад:

написал заявление в сбере на 21:pepehands:

27 выхожу в вк :EZ:

 

 

скок деняк

205 на руки, но я джуняра

 ладно, не давай деняк

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


Ссылка на сообщение

Дайте ему деняк


 

DB

59221730.png


Я - гений, ёпта

bfe7003be27e8e81ce6a7d2d8192e9ae.jpg


22


msg-93176-0-72842500-1438846470_thumb.jpg

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


Ссылка на сообщение

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Восстановить форматирование

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Загрузка...

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