小编Ani*_*dia的帖子

需要Java中的线程安全MessageDigest

我需要在性能关键环境中使用MessageDigest从多个线程中散列多个键.我开始知道MessageDigest不是线程安全的,因为它将状态存储在它的对象中.什么是实现密钥线程安全散列的最佳方法?

使用案例:

MessageDigest messageDigest = MessageDigest.getInstance("SHA-1");

//somewhere later, just need to hash a key, nothing else
messageDigest.update(key);
byte[] bytes = messageDigest.digest(); 
Run Code Online (Sandbox Code Playgroud)

特别:

  1. ThreadLocal会保证有效吗?它会有性能损失吗?
  2. getInstance返回的对象是否不同,它们是否相互干扰?文档说"新"对象,但我不确定它是否只是(共享)共享具体类的包装器?
  3. 如果getInstance()返回"真正的"新对象,那么每次我需要计算哈希值时是否建议创建一个新实例?在性能损失方面 - 它的成本是多少?

我的用例非常简单 - 只需哈希一个简单的密钥.我不能使用同步.

谢谢,

java performance message-digest

25
推荐指数
2
解决办法
2万
查看次数

从C++传递一个函数指针,由C#调用 - 函数参数包括一个宽字符串(LPCWSTR)

我正在编写一个C#库,供本机C++应用程序使用.我使用C++/CLI作为互操作性机制.

我需要将回调函数从C++传递给C#(使用C++/CLI作为中间层).C#库需要使用零终止的宽字符串来调用C++函数; 即回调函数的原型是

Func(LPCWSTR pszString);

还有其他参数,但它们对于这个讨论并不重要.

我搜索网,发现Marshal.GetDelegateForFunctionPointer方法,我可以使用.这个问题是它将System.String从C#转换为char*而不是我正在寻找的wchar_t*.

此外,如果可能的话,实现此代码示例的最佳方法是什么,包括C++/CLI部分.C++/CLI dll依赖于C#dll.方法需要同步调用.

c# unmanaged c++-cli callback wchar

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

标签 统计

c# ×1

c++-cli ×1

callback ×1

java ×1

message-digest ×1

performance ×1

unmanaged ×1

wchar ×1