|
|
1
7
最好将此一次调用依赖关系移动到多次调用函数的逻辑。如果只需要调用函数一次,那么只需调用一次。或者,将不同的参数传递给函数,以指示您正在执行不同的操作。 |
|
|
2
5
要消除竞争条件,您需要一个锁。 |
|
|
3
4
在C/C++中,您通常可以保留这样一个事实,即通过使用静态变量(如下所示)只调用一次doMyFunction():
这避免了使用全局变量,但具有相同的效果,并且静态var在相关的地方被声明,因此很清楚发生了什么。请注意,这不是线程安全的,因此如果有线程,则需要一个锁。 |
|
|
4
2
它不是线程安全的。这对您来说可能无关紧要,但您确实说过“语言不可知”:您可能不想在Java的通用库中使用此模式。 这是一个很难用语言不可知论的方式回答的问题,因为可用的替代方案在很大程度上取决于语言。例如,在POSIX上,如果您需要线程安全性,就有一次pthread_。在C语言中,有静态的局部变量来将布尔值从全局范围中去掉。在任何OO语言中,如果要拍摄“某物”的快照以供以后使用,那么可能会有一个与“某物”(或快照)对应的合适对象,该对象可以存储标志。 |
|
|
5
0
|
|
6
0
我看没有别的办法了。关于如何提高这一点,我想到的唯一一件事就是线程安全性。但是,只有当您有多个线程调用该函数时,才需要这样做。 |
|
|
7
0
在Perl 5.10或更高版本中,您将使用
输出 first not first not first not first not first |