![]() |
1
36
这样的字符串(从代码中)可以是“ interned “。这意味着“abc”的所有实例都指向同一对象。甚至跨越 AppDomain 你可以指向同一个物体(尖端是thx steven)。 如果您有许多来自不同位置但具有相同文本的字符串互斥体,它们都可以锁定在同一对象上。
最好使用:
另外,因为你的字符串不是
|
![]() |
2
24
要回答您的问题(正如其他一些问题一样),您提供的代码示例存在一些潜在问题:
一般来说,我建议不要锁定字符串。但是,我遇到过这样一个情况,在那里做这件事是有用的。 有时我维护了一个锁对象的字典,其中的键对于我所拥有的某些数据来说是独一无二的。这里有一个人为的例子:
这样的代码的目标是序列化
我认为.NET的字符串实习生可以简化一些事情:
这里的区别在于,我依赖于字符串内部为每个实体ID提供相同的对象引用。这简化了我的代码,因为我不必维护互斥实例的字典。 请注意,我使用的硬编码UUID字符串是命名空间。如果我选择在应用程序的另一个区域中采用同样的方法锁定字符串,这一点很重要。 锁定字符串可能是一个好主意,也可能是一个坏主意,这取决于环境和开发人员对细节的关注程度。 |
![]() |
3
1
如果需要锁定字符串,可以创建一个对象,该对象将字符串与可以锁定的对象配对。
|
![]() |
4
0
我想,如果生成的字符串很多而且都是唯一的,那么锁定内部字符串可能会导致内存膨胀。另一种应该提高内存效率并解决即时死锁问题的方法是
|
![]() |
da cheng · 在c++11中使用条件变量使程序陷入死锁 7 年前 |
![]() |
Eunjeong Choi · 为什么此代码返回意外结果?(条件变量) 7 年前 |
![]() |
Razonixx · 从线程内增加全局计数器变量,而不必等待每个线程 7 年前 |
![]() |
Administrator · c#-等待完成2个线程中的1个 7 年前 |
![]() |
Francis Cugler · 删除Windows库依赖项 7 年前 |
![]() |
AshR · 程序断断续续地使用main报告与线程本身不同的线程id 7 年前 |
|
user7256215 · 在macOS内核扩展中有效地使用同步 7 年前 |