FileMode = Create тогда файл будет автоматически создан если отсутствует и не выдаст ошибки если уже есть
FileAccess = Write чтобы файл можно было создать (если создать его заранее то хватит Read)
SharedAccess = None запрет на повторное открытие хоть на чтение хоть на запись 
  
   
       
  
  using var globalMutex = new Mutex(false, "Global\\test_mx");
var result = globalMutex.WaitOne(1000);
Console.WriteLine(result ? "Owned" : "Not owned in 1s");
Console.ReadLine();Owned, а в другом Not owned in 1sGlobal\ обязателен. Без него мутекс будет локальный для текущего процесса.      -- using window functions
select distinct 
	uid, first_value(utm) over (partition by uid order by id desc) last_utm
from t;
-- using join 
select t.uid, t.utm last_utm
from t
join (
	select max(id) max_id from t group by uid
) max_ids on max_id = id;
-- using sub-query
select t.uid, t.utm last_utm
from t
where id = (select max(id) max_id from t group by uid having max(id) = t.id);select date,val from table where val<>prev_val order by idselect date,val from table x where val<>(select val from table y where y.date<x.date order by id desc limit 1)function makeid()
{
    var text = "";
    var possible = "abcdefghijklmnopqrstuvwxyz";
    for( var i=0; i < 5; i++ )
        text += possible.charAt(Math.floor(Math.random() * possible.length));
    return text;
}$stock = [
	["id"=>1, "ver"=>13, "name"=>"gta v"],
	["id"=>2, "ver"=>48, "name"=>"gta sa"],
	["id"=>3, "ver"=>119, "name"=>"chess"],
];
$total = 0;
foreach($stock as $v) $total += $v["ver"];
$rnd = rand(1, $total);
$run = 0;
foreach($stock as $v) {
	$run += $v["ver"];
	if( $rnd <= $run) break;
}
$prizeName = $v["name"];/**
 * Случайная выборка с учетом веса каждого элемента.
 * @param array $data Массив, в котором ищется случайный элемент
 * @param string $column Параметр массива, содержащий «вес» вероятности
 * @return int Индекс найденного элемента в массиве $data 
 */
function getRandomIndex($data, $column = 'ver') {
  $rand = mt_rand(1, array_sum(array_column($data, $column)));
  $cur = $prev = 0;
  for ($i = 0, $count = count($data); $i < $count; ++$i) {
    $prev += $i != 0 ? $data[$i-1][$column] : 0;
    $cur += $data[$i][$column];
    if ($rand > $prev && $rand <= $cur) {
      return $i;
    }
  }
  return -1;
}
// Использование
$games = [
	['name' => 'Игра 1', 'ver' => 2], // вероятность 2/15
	['name' => 'Игра 2', 'ver' => 0], // вероятность 0/15
	['name' => 'Игра 3', 'ver' => 1], // вероятность 1/15
	['name' => 'Игра 4', 'ver' => 4], // вероятность 4/15
	['name' => 'Игра 5', 'ver' => 8], // вероятность 8/15
];
$i = getRandomIndex($games);
echo $games[$i]['name'];