Случай на миду
Зеленою весной
С нетворсом под десной
На мид дрифтер заявляется
Сердито так глядит
Ногтями шевелит
И стоит как ебанат улыбается
Подпушил
Со скилла словил прихил
Ультою он суету навел
Дедкок
- Дорогой, где ты был?
- Отпушивал пачку.
- Странно, но нетворса нет и пачка на месте!
- Дура! Я был на другой линии!...
- Дорогой, где ты был?
- Фармился в лесу
- Странно, но нетворса нет и лес весь целый!
- А ты на автоматы посмотри!
- Дорогой, где ты был?
- Бил мидбосса
- Странно, но реджува нет и ты в таверне!
- Сука, меня запарировали!...
- Дорогой, где ты был?
- У Волкера!
- Странно, но наш Волкер упал как будто ты фидил!...
- Дорогой, где ты был?
- Файтился!
- Странно, но нетворса нет и килами совсем не пахнет!...
- Дорогой, где ты был?
- Ломал автоматы!
- Странно, но флекса нет и волкер живой!
- А с хуя ли он должен быть. И ты заебала все коллитт. Убейся, блядь, об стену! Иди на хуй!
- Но....
- Я сказал иди на хуй!...
- Дорогой, где ты был?
- Отпушивал пачку, а че?
- Хуй через плечо. Хули нетворса нет?
- Дорогой, где ты был?
-Стрелял по патрону под руной один в шесть
- Странно, но реджувом совсем не пахнет.
- Дура, я под читдессом...
- Дорогой, а почему нет нетворса?
- Потому что я бил автоматы в в вражеском лесу!...
- Дорогой, где ты был?
- Отпушивал пачку.
- Странно, но нетворса совсем нет!
- Мне что, блядь, в одного бегать, чтобы у меня перефарм был!...
- Дорогой, где ты был?
- Относил урну!
- Один?
- Нет, блядь, Тор!...
- Дорогой где ты был?
- Иди на хуй!!!!!!
Cтратегия Deadlock: Planetary Conquest в браузере
Очередная игра по вашим заявкам из комментариев. Список еще большой) Deadlock глобальная научно фантастическая стратегия где игрок выбрав одну из 7 рас борется за контроль над целой планетой, начиная со строительства маленьких колоний постепенно захватывать всё большие территории.



Всем отличного дня и времяпровождения!
Мой уютный браузерный канал, где игр чуть больше
Dead lock
Перед тем, как разобрать, что такое live lock, вспомним, что такое dead lock.
Deadlock bug на простейшем примере
Два потока захватывают мьютексы в разном порядке. Это может привести к ситуации, что планировщик запустит на выполнение поток 1, поток 1 захватит мьютекс 1, после чего планировщик приостановит выполнение потока 1 и запустит на выполнение поток 2. Поток 2 захватит мьютекс 2. Независимо от того, какой поток будет выполняться дальше, программа зависнет, т.к. потоки будут ждать разблокировки мьютексов (поток 1 - мьютека 2, поток 2 - мьютека 1), которая никогда не произойдет.
#include <iostream>
#include <thread>
#include <mutex>
void thread1(std::mutex& mutex1, std::mutex& mutex2)
{
std::lock_guard<std::mutex> lock1(mutex1);
std::cout << "Thread 1 acquired mutex1\n";
std::lock_guard<std::mutex> lock2(mutex2);
std::cout << "Thread 1 acquired mutex2\n";
}
void thread2(std::mutex& mutex1, std::mutex& mutex2)
{
std::lock_guard<std::mutex> lock2(mutex2);
std::cout << "Thread 2 acquired mutex2\n";
std::lock_guard<std::mutex> lock1(mutex1);
std::cout << "Thread 2 acquired mutex1\n";
}
int main()
{
std::mutex mutex1;
std::mutex mutex2;
std::thread t1(thread1, std::ref(mutex1), std::ref(mutex2));
std::thread t2(thread2, std::ref(mutex1), std::ref(mutex2));
t1.join();
t2.join();
}
Fix dead lock bug
В современном C++ баг, описанный выше, исправляется с помощью использования std::scoped_lock
#include <iostream>
#include <thread>
#include <mutex>
void thread1(std::mutex& mutex1, std::mutex& mutex2)
{
const std::scoped_lock lock(mutex1, mutex2);
std::cout << "Thread 1 acquired mutex1 and mutex2\n";
}
void thread2(std::mutex& mutex1, std::mutex& mutex2)
{
const std::scoped_lock lock(mutex1, mutex2);
std::cout << "Thread 2 acquired mutex1 and mutex2\n";
}
int main()
{
std::mutex mutex1;
std::mutex mutex2;
std::thread t1(thread1, std::ref(mutex1), std::ref(mutex2));
std::thread t2(thread2, std::ref(mutex1), std::ref(mutex2));
t1.join();
t2.join();
}
Больше технических постов тут t.me/neverending_cpp




