var tmp_leader = leader;
создаётся копия ссылки. Ошибка происходила из за того, что объект никак на самом деле не блокируется и сразу после проверки на null вторым потоком, первый тут же менял ссылку и к моменту .выполнения строчки Console.Write(leader.id)
; leader уже был равен null. Задачу можно было бы решить обернув тело цикла второго потока в locker.EnterReadLock()
locker.ExitReadLock()
, но в данном конкретном случае блокирование не необходимо и можно обойтись копированием ссылки. Этот вариант проще, чем тот, что Вам посоветовали на другом форуме, хотя решение тоже рабочее.this.i++
уже может дать неопределённое поведение. На такой случай есть Interlocked.Increment, делающую инкремент атомарно. При написании многопоточного кода следует избегать блокирования если оно не необходимо, так как любая синхронизация, а тем более ожидание освобождения объекта синхронизации это довольно дорого по времени. <?php header('Content-Type: text/html; charset=UTF-8'); ?>
<?php
function set_encrypted_cookie($name, $value) {
// зависит от вашей базы
// $enc_key_row = sql_request("select key,id from keytable order by date desc limit 1;");
$value = $enc_key_row['id'] . ':' . openssl_encrypt($value, "bf-cbc", $enc_key_row["key"]);
setcookie($name, $value);
}
function get_encrypted_cookie($name) {
$ret = false;
if(!empty($_COOKIE[$name]) {
$v = $_COOKIE[$name];
list($key_id, $value) = split($v, ':');
$key_id = (int)$key_id;
// зависит от вашей базы
// $enc_key_row = sql_request("select id,key,date from keytable where id=$key_id AND date > DATE_SUB(NOW(), INTERVAL 7 DAY);");
if($enc_key_row !== false)
$ret = openssl_decrypt($value, "bf-cbc", $enc_key_row["key"]);
}
return $ret;
}
?>
Программы, находящиеся в этих каталогах, требуют прав root, а у root эти каталоги включены в PATH. Так что все логично
ip tunnel add v6-1 mode sit remote 209.51.161.14 local 45.139.184.150 ttl 255
ip link set v6-1 up
ip -6 addr add 2001:470:8a87:1111:1111:1111:1111:1111/128 dev v6-1
ip -6 rule add from 2001:470:8a87:1111:1111:1111:1111:1111/64 table 601
ip -6 route add default dev v6-1 table 601
#ip -6 rule add from $subnet1 table 601
ip tunnel add v6-2 mode sit remote 184.105.250.46 local 185.230.140.161 ttl 255
ip link set v6-2 up
ip -6 addr add 2001:470:411c:2222:2222:2222:2222:2222/128 dev v6-2
ip -6 rule add from 2001:470:411c:2222:2222:2222:2222:2222/64 table 602
ip -6 route add default dev v6-2 table 602
#ip -6 rule add from $subnet2 table 602
ip -6 route add default dev v6-1 metric 1
ip -6 route add default dev v6-2 metric 2