我正在编写一个将批量创建用户的程序,我有一个操作是创建过程的一部分,它会阻塞大约 5 秒,为了解决这个问题,我打算让它成为线程并将所有东西都放在线程池中。
我的问题是,如果我在线程之外创建原则并将组原则传递给线程并调用group.Members.Add(u)
,group.Save()
我会遇到麻烦吗?从每个线程内部生成一个新的组主体会更好吗?
我正在编写一个将批量创建用户的程序,我有一个操作是创建过程的一部分,它会阻塞大约 5 秒,为了解决这个问题,我打算让它成为线程并将所有东西都放在线程池中。
我的问题是,如果我在线程之外创建原则并将组原则传递给线程并调用group.Members.Add(u)
,group.Save()
我会遇到麻烦吗?从每个线程内部生成一个新的组主体会更好吗?
任何时候两个线程作用于同一个集合实例,你都是不安全的。如果您只是使用单个后台线程以便 UI 不会阻塞,则在后台线程中创建组并在那里独占使用它。如果您的计划是通过生成多个线程同时访问 Active Directory 来加速将用户添加到组中,我猜这将无济于事。
来自MSDN:
此类型的任何公共静态(在 Visual Basic 中为 Shared)成员都是线程安全的。不保证任何实例成员都是线程安全的。
那个小注释在文档中很常见。程序员可以决定“线程安全”的含义以及如何控制并发访问。