草庐IT

synchronization

全部标签

ios - @synchronized 指令的使用 - Objective-C Mutex Lock iOS

在方法体上使用@synchronized指令-(void)testSynchronizeMethod:(int)value{@synchronized(value){intvalue1=100;//sampleline1intvalue2=120;//sampleline2[selfcalledMethod];}}//case1-(void)calledMethod{NSLog(@"is@synchronizeddirectiveappliedtothismethod");NSLog(@"whathappensifIenclosethismethodwith@synchronizedd

iphone - @synchronized(self) 有多少开销?

我一直在为我的iPhone应用开发一个对象类,它可以在应用的另一部分首次请求图像时延迟加载图像。我决定使图像线程的加载安全,这样同一图像不会意外加载两次,但是我很好奇每次运行访问器时进行@synchronized(self)调用的开销,如下所示:-(UIImage*)image{@synchronized(self){if(_image==nil){_image=[UIImageimageWithContentsOfFile:self.imageUrl];}}return_image;}首先检查属性是否为nil然后使用@synchronized指令会更好吗?-(UIImage*)ima

ios - 这个 GCD 实现的 getter setter 线程安全并且比@synchronized 工作得更好吗?对象

@interfaceViewController()@property(nonatomic,strong)NSString*someString;@end@implementationViewController@synthesizesomeString=_someString;-(NSString*)someString{__blockNSString*tmp;dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0),^{tmp=_someString;});returntmp;}-(void

java - 安卓/java : synchronized object wait and notify

我对同步方法感到困惑。看下面这段代码:publicvoidwaitOne()throwsInterruptedException{synchronized(monitor){while(!signaled){monitor.wait();}}}publicvoidset(){synchronized(monitor){signaled=true;monitor.notifyAll();}}现在,据我了解,同步意味着只有1个线程可以访问其中的代码。如果waitOne()被主线程调用,set()被子线程调用,那么(从据我所知)它会造成死锁。这是因为ma​​inthread永远不会退出syn

Java 同步游戏 : synchronized && wait && notify

我来自.NET世界,不幸的是用.NET的眼光看Java源代码。以下代码来自Android应用程序(尽管根本不是特定于Android的):privateclassWorkerimplementsRunnable{privatefinalObjectmLock=newObject();privateLoopermLooper;Worker(Stringname){Threadt=newThread(null,this,name);t.start();synchronized(mLock){while(mLooper==null){try{mLock.wait();}catch(Interr

java - onReceive() 回调中的同步块(synchronized block)

我正在阅读thispage关于如何对Android进行编程以与USB配件对话。其中一个步骤涉及注册BroadcastReceiver以获得用户的许可:IntentFilterfilter=newIntentFilter(ACTION_USB_PERMISSION);registerReceiver(mUsbReceiver,filter);其中mUsbReceiver定义为:privatefinalBroadcastReceivermUsbReceiver=newBroadcastReceiver(){publicvoidonReceive(Contextcontext,Intenti

java - 多线程正确性 : Using synchronized block

我正在使用CMUSphinx语音识别器库(Linktosource),它使用了一些synchronizedblock。来自RecognizerTask的一个示例block:Eventmailbox;[...]publicvoidstart(){synchronized(this.mailbox){this.mailbox.notifyAll();this.mailbox=Event.START;}}代码没有任何问题,但是BugFinder给出了这个警告:Bug:SynchronizationonRecognizerTask.mailboxinfutileattempttoguardit

android - android : asynchronous request or synchronous request in AsyncTask? 的 Retrofit 2 最佳实践

我正在使用Retrofit2AndroidREST客户端的库。Retrofit本身支持同步和异步请求(参见here),后者的原因是不阻塞线程,因此不会被android中断。在实践中,在原生AsyncTask中使用同步调用还是直接从Retrofit中使用异步调用更好?如果其中一个优于另一个,技术原因是什么? 最佳答案 使用任何流行的REST客户端(retrofit、volley等)的主要原因之一是它们减少了您在应用程序层管理的详细信息量。其中一个细节是确保您的网络请求发生在主线程之外。为什么要使用AsyncTask,而他们已经在使用其

android - 何时在 Android 游戏的方法中同步方法或使用同步块(synchronized block)?

我正在研究在Android中编写简单的图形代码,我注意到一些synchronized()block。这背后的原因是什么?我怎么知道什么时候应该“同步”我的代码? 最佳答案 synchronized语句block通常用于并发编程(多线程应用程序),其中您的应用程序使用多个线程。以Android游戏为例,您可以让一个线程处理客户端,另一个线程处理服务器,一个产生其他进程,等等。关键字本身确保您的方法一次被一个线程访问,这使它们是线程安全的。如果您的应用程序要在不使用synchronized语句的情况下共享资源,您将面临deadlock的

synchronization - Zookeeper 是否具有进程同步功能,还是仅用于控制进程?

我的意思是zookeeper是否提供任何通用的同步机制IPC(例如共享区域),或者这是一个应用程序设计的问题,应该用例如ZeroMQ、RabbitMQ、Redis? 最佳答案 “Zookeeper是一种高度可配置、高度可用的协调服务。”来自Hadoop的书,因为Hadoop是用Zookeeper构建的。将它与JMS消息传递(MQ)进行比较——在Zookeeper中,节点必须相互了解,它们准备好进行协调;我猜可以将队列与Znodes进行比较......对于Zookeeper,有两种类型:永久性的,它将在节点关闭并跨集群后持续存在,以及