$ touch {1,2}.txt
$ ls [12].txt
1.txt 2.txt
$ rm !:1
rm [12].txt
$ history | tail -10
...
10007 touch {1,2}.txt
...
$ !10007
touch {1,2}.txt
$ for f in *.txt; do mv $f ${f/txt/doc}; done
Блокировка отдельного закрытого
фиктивного объекта дает вам гарантию, что никто другой не заблокирует этот объект.
Если вы заблокируете данные, и этот же фрагмент данных будет виден извне вы теряете эту гарантию. Например:
public class MyObject
{
public void SharedMethod()
{
lock (this)
{
// Do stuff
}
}
}
class Program
{
static void Main(string[] args)
{
MyObject o = new MyObject();
lock (o)
{
new Thread(() =>
{
// Gets blocked 2s because of external lock
o.SharedMethod();
}).Start();
Thread.Sleep(2000);
}
}
}
Джефф Рихтер (автор CLR через C #) объясняет, почему в этой статье о Safe Thread Synchronization .
В частности, в этой статье на ваш вопрос отвечает раздел «Почему великая идея не так хороша».
На самом деле это глава из книги CLR Via C # .
В итоге наличие частного объекта в качестве объекта «synclock» позволяет вашему классу инкапсулировать и контролировать любую блокировку, необходимую вашему классу. Следовательно, независимо от того, сколько клиентов используют ваш класс, блокировка выполняется последовательно и правильно.
В частности, в этой статье на ваш вопрос отвечает раздел «Почему великая идея не так хороша?»
На самом деле это глава из книги CLR Via C # .
В итоге наличие частного объекта в качестве объекта «synclock» позволяет вашему классу инкапсулировать и контролировать любую блокировку, необходимую вашему классу. Следовательно, независимо от того, сколько клиентов используют ваш класс, блокировка выполняется последовательно и правильно.
В частности, в этой статье на ваш вопрос отвечает раздел «Почему великая идея не так хороша».
На самом деле это глава из книги CLR Via C # .
В итоге наличие частного объекта в качестве объекта «synclock» позволяет вашему классу инкапсулировать и контролировать любую блокировку, необходимую вашему классу. Следовательно, независимо от того, сколько клиентов используют ваш класс, блокировка выполняется последовательно и правильно.