Skip to content

Instantly share code, notes, and snippets.

View Ruthenus's full-sized avatar

Ruslan Kachurovskyi Ruthenus

  • Odesa, Ukraine
View GitHub Profile
@sunmeat
sunmeat / different files.cs
Last active February 26, 2026 14:06
камінь ножиці папір - проста версія IPC (!!!!!!! СПОЧАТКУ ПОДИВИТИСЯ ПРИКЛАД В КОМЕНТАРІ !!!!!!!!)
Server.cs (перший проект):
using System.Diagnostics;
class GameServer
{
private static int serverScore = 0;
private static int botScore = 0;
static void Main()
@sunmeat
sunmeat / Program.cs
Last active February 22, 2026 14:50
create threads demo
namespace Threads
{
class Program
{
static void Main()
{
SimpleThreadDemo();
// CustomThreadDemo();
}
@sunmeat
sunmeat / Program.cs
Last active February 22, 2026 15:03
current thread
class MyThreads
{
static void Main()
{
Console.WriteLine("Main Thread Id: " + Thread.CurrentThread.ManagedThreadId);
Thread.Sleep(1000);
Console.WriteLine("\n\n");
new Thread(DoDogs) { IsBackground = false }.Start(); // запуск вторинного пріорітетного потоку
DoDogs(); // запуск методу в первинному потоці
@sunmeat
sunmeat / Program.cs
Last active February 22, 2026 15:32
thread join demo
class ExampleOfThreadWithState
{
public static void AnotherMethod()
{
for (int i = 0; i < 250; i++)
{
Console.Write(".");
Thread.Sleep(15);
}
Console.WriteLine("AnotherMethod ENDS.");
@sunmeat
sunmeat / Program.cs
Last active February 22, 2026 15:43
suspend resume stop another thread demo
using System.Text;
class Program
{
static ManualResetEvent pauseEvent = new ManualResetEvent(true); // true - потік одразу активний
static bool isRunning = true; // прапор роботи другого потоку
static void Main()
{
Console.OutputEncoding = Encoding.UTF8;
@sunmeat
sunmeat / Program.cs
Last active March 29, 2026 18:08
thread priority example
using System.Text;
class Program
{
static object critical = new object();
static bool run = true;
static void Run(object? nameObj)
{
string name = nameObj + "" ?? "Потік";
@sunmeat
sunmeat / Program.cs
Last active March 29, 2026 18:34
thread priority masterpiece :)
using System.Runtime.InteropServices;
class ThreadPriorityExample
{
static object locker = new();
static Random random = new();
const int STD_OUTPUT_HANDLE = -11;
static IntPtr consoleHandle = GetStdHandle(STD_OUTPUT_HANDLE);
@sunmeat
sunmeat / Program.cs
Last active March 29, 2026 18:45
WaitOne, volatile
using System.Text;
class Program
{
static volatile bool duckRoasted = false; // volatile гарантує, що зміни змінної, зроблені одним потоком, одразу стануть видимими іншим потокам
// без volatile компілятор і процесор можуть оптимізувати код так, що один потік (який лайкає пости) читатиме застаріле значення duckRoasted, закешоване в регістрах процесора або кеші ядра CPU
// це може призвести до ситуації, коли duckRoasted уже встановлено в true у roastDuck(), але likeSocialMediaPosts() продовжує працювати безкінечно, не помічаючи зміни
// без volatile компілятор або процесор можуть переставити інструкції місцями, наприклад, записати duckRoasted = true; до виведення "Качка готова!", що може призвести до некоректного порядку подій
// volatile – це простий спосіб уникнути проблем із кешуванням змінної між потоками
@sunmeat
sunmeat / Program.cs
Last active March 29, 2026 19:16
timer + callback method
using System.Text;
class Program
{
static volatile bool duckRoasted = false;
static Timer? checkTimer;
// метод запікання качки з підтримкою колбека
static void RoastDuck(object? param)
{
@sunmeat
sunmeat / Program.cs
Last active March 30, 2026 19:06
приклад на пул потоків
using System.Text;
class Program
{
static readonly object fileLock = new object();
static void RoastDuck(object? state)
{
var dishName = (string?)state;