小编Ste*_*fan的帖子

DotNet:DLL中的静态变量

我正在开发一个包含DLL的Dot Net项目.此DLL使用.lib(C代码).不幸的是,这个.lib中有许多静态变量.我在这里遇到的问题:

如果两个用户同时执行搜索,我会收到一个错误,因为他们都访问.lib,一个更改某些内容而另一个尝试读取数据.

显而易见的解决方案是锁定访问权限,但我真的不想这样做,因为这会大大减慢搜索过程.我宁愿尝试从lib创建一个DLL,但我不知道这是否会解决问题,因为我不知道静态变量是否会单独存储,或者两个搜索进程是否都会访问变量.

有任何人对此有经验吗?因为这需要相当长的时间才能做到这一点,而且在开始这样做之前我想知道它是否有效.

我希望一切都是可以理解的,因为英语不是我的第一语言,而且我的编程技巧非常基础.

.net c c# dll static

5
推荐指数
1
解决办法
546
查看次数

使用std :: move on pair.first会使pair.second失效吗?

我目前在项目中有以下代码:

std::vector<int> vectorOfFirsts;
std::set<double> setOfSeconds;
std::list<std::pair<int,double>> cachedList;
// do something to fill the list 
for (const auto& pair : cachedList)
{
   vectorOfFirsts.push_back(pair.first);
   setOfSeconds.insert(pair.second);
}
Run Code Online (Sandbox Code Playgroud)

此列表将非常大,并且仅用于填充向量和集合(即其内容可以无效).我现在的问题是,如果以下优化是一个好主意:

 for (const auto& pair : cachedList)
 {
       vectorOfFirsts.push_back(std::move(pair.first));
       setOfSeconds.insert(std::move(pair.second));
 }
Run Code Online (Sandbox Code Playgroud)

调用std :: move on pair.first会以某种方式使pair.second无效吗?这段代码会为循环提供任何加速吗?我知道填充矢量/集而不是列表可能是个好主意,但是列表是通过一些我无法控制/没有时间挖掘的遗留代码来填充的.

c++ move std-pair

3
推荐指数
1
解决办法
447
查看次数

标签 统计

.net ×1

c ×1

c# ×1

c++ ×1

dll ×1

move ×1

static ×1

std-pair ×1