我一直在使用这种模式来初始化我的类中的静态数据.它看起来对我来说是安全的,但我知道细微的线程问题是多么微妙.这是代码:
public class MyClass // bad code, do not use
{
static string _myResource = "";
static volatile bool _init = false;
public MyClass()
{
if (_init == true) return;
lock (_myResource)
{
if (_init == true) return;
Thread.Sleep(3000); // some operation that takes a long time
_myResource = "Hello World";
_init = true;
}
}
public string MyResource { get { return _myResource; } }
}
Run Code Online (Sandbox Code Playgroud)
这里有洞吗?也许有一种更简单的方法可以做到这一点.
更新:共识似乎是静态构造函数是要走的路.我使用静态构造函数提出了以下版本.
public class MyClass
{
static MyClass() // a static constructor
{ …Run Code Online (Sandbox Code Playgroud) 好吧,这只是出于好奇,但为什么睡眠功能不能在循环中工作,或者我怎样才能让它在循环中工作?
for(int i = 0; i < 5; i++) {
cout << i << endl;
sleep(2);
}
Run Code Online (Sandbox Code Playgroud) 如何确定文件的 mime 类型(在 OCaml 中)?
我正在尝试为 GtkSourceView 控件设置语言,但为此,我需要首先确定语言。我能看到执行此操作的唯一方法是使用 mime-type - 有一个函数将返回正确的语言,如下所示:
GSourceView.source_languages_manager#get_language_from_mime_type : string -> source_language option
Run Code Online (Sandbox Code Playgroud)
我真的不想将语言硬编码到我的源代码中。如果无法确定 OCaml 中的 mime 类型(在搜索文档后我还没有找到方法),是否有另一种方法可以确定源语言?
我用delphi来获取dos输出.
导致http://delphi.about.com/cs/adptips2001/a/bltip0201_2.htm的代码无法在vista上使用delphi2009?但它适用于XP中的D7.我不知道要修改哪个部分才能使其工作.
我想做的是str.replace(pattern, callback),
不简单str.replace(pattern, replace_pattern),
有可能在javascript中做到这一点吗?
Wordpress存在一些挑战,因为它往往会在数据库中保留太多,使得很难从服务器移动到服务器.
还有什么其他问题需要注意?
你的工作流程是什么样的?
我正在使用lat/long处理地理点,并且需要在该点的5英里范围内找到我们数据库中的其他点.但是,我似乎无法找出STBuffer的"单位",它似乎不符合英尺,英里,米,公里等.文档仅将它们称为"单位",任何建议?谢谢
[...]来自geography :: STGeomFromText('POINT(xy)',4326).STBuffer(z).STIntersects(geography :: STGeomFromText('POINT('+ CAST(v.Longitude as varchar(max))+ ''+ CAST(v.Latitude as varchar(max))+')',4326))= 1
我在所有Linux开发中使用netbeans(C/C++,Php,Python,Symfony).我现在正在学习django,并想知道我是否可以使用netbeans作为IDE.我似乎无法为netbeans找到一个Django插件.
有吗?如果没有计划的时间?
最糟糕的情况是,我将不得不使用另一个IDE(我真的不想学习另一个IDE) - 但是,如果是这样,你们用什么来进行django开发?