У меня есть метод, который принимает параметр string
, и этот метод будет вызываться одновременно. Я хочу заблокировать вызовы, которые проходят в одной строке. Например, два потока проходят в "abc"
для одновременного вызова метода, тогда я надеюсь, что они один за другим. При этом вызов "xyz"
из другого потока не затрагивается. Так что мне запирать?
void Foo(string s) {
lock(what) {} // ???
}
В настоящее время я блокирую String.Intern(s)
, но я понимаю, что это увеличит несобираемую интернированную строку, и этот метод будет вызываться бесчисленное количество раз путем передачи бесчисленного количества различных строк во время работы приложения, поэтому я хочу его улучшить.