我正在努力完全理解GCD中的并发和串行队列.我有一些问题,希望有人能够清楚地回答我.
我正在读取串行队列的创建和使用,以便一个接一个地执行任务.但是,如果出现以下情况:
dispatch_async(在我刚创建的串行队列上)三次来发送三个块A,B,C这三个块会被执行:
按顺序A,B,C,因为队列是串行的
要么
我正在阅读我可以dispatch_sync在并发队列上使用,以便一个接一个地执行块.在这种情况下,为什么串行队列甚至存在,因为我总是可以使用并发队列,我可以根据需要同步调度多个块?
谢谢你的任何好解释!
我似乎无法找到一个很好的解释.
我知道git pull会做什么:
1)获取,即来自服务器的所有额外提交被复制到本地存储中,并且origin/master分支指针移动到提交链的末尾
2)合并所述的原点/主分支到主支路,该主支指针移动到新创建的提交,而原点/主指针留在原地.
我认为git push做的事情非常相似,但我不确定.我相信它会做其中一个,或类似的东西,或其他东西(?):
要么
我目前正在使用git进行基本操作,所以我做得很好,但我想完全理解这些内部结构.
我知道UIPickerView有这个方法:
- (void)pickerView:(UIPickerView *)pickerView
didSelectRow:(NSInteger)row
inComponent:(NSInteger)component
Run Code Online (Sandbox Code Playgroud)
但是在这个方法中,我想获得其他组件的选定行.我怎么能这样做?
尝试使用RoboVM将我的LibGDX游戏移植到iOS.
在为模拟器运行应用程序时,我收到此错误:
Exception in thread "main" java.lang.UnsatisfiedLinkError:
at com.badlogic.gdx.backends.iosrobovm.IOSGLES20.init(Native Method)
at com.badlogic.gdx.backends.iosrobovm.IOSGLES20.<init>(IOSGLES20.java)
at com.badlogic.gdx.backends.iosrobovm.IOSApplication.didFinishLaunching(IOSApplication.java)
at com.badlogic.gdx.backends.iosrobovm.IOSApplication$Delegate.didFinishLaunching(IOSApplication.java)
at org.robovm.cocoatouch.uikit.UIApplicationDelegate$Callbacks.didFinishLaunching(UIApplicationDelegate.java)
at org.robovm.cocoatouch.uikit.UIApplication.UIApplicationMain(Native Method)
at org.robovm.cocoatouch.uikit.UIApplication.main(UIApplication.java)
at ***********
Run Code Online (Sandbox Code Playgroud) 我知道你可能会发现这是一个奇怪的问题,但我只是在学习GCD,我想完全理解它的所有方面.所以这里是:
是否有任何理由在CURRENT QUEUE上发送任务SYNC?
例如:
dispatch_queue_t concurrentQueue = dispatch_get_global_queue(...);
dispatch_async(concurrentQueue, ^{
//this is work task 0
//first do something here, then suddenly:
dispatch_sync(concurrentQueue, ^{
//work task 1
});
//continue work task 0
});
Run Code Online (Sandbox Code Playgroud)
我理解一件事:如果不是concurrentQueue我使用串行队列,那么我在该串行队列上得到一个死锁,因为work task 1直到work task 0完成才能启动(因为串行队列保证执行顺序),并且在同一时间work task 0不能继续执行,因为它等待SYNC dispath函数返回(请纠正我,如果我错了,这将使我成为一个总菜鸟).
回到最初的想法,上面的代码和相同的代码之间有什么区别,而不是调用dispatch_sync函数我只是work task 1直接编写代码?
让我来描述你想要的东西:我想建立一个"主应用程序"并设置它,以便当手机通电时,它会立即进入主应用程序.用户永远不能退出此应用程序(这将用于父母控制之类的东西),并且他只能从其中启动其他应用程序.
基本上它就像一个"自定义桌面".
我必须强调,重要的是这个应用程序永远不会退出.只要手机启动,这是用户可以访问的唯一环境.
在我解释了我需要的东西后,我需要你的帮助告诉我我在寻找什么.这是我一直听到的某种"默认发射器"吗?或者这是怎么称呼的?我该怎么做?
谢谢
我想以编程方式启动默认文件资源管理器以显示文件夹的内容.
我正在使用此代码,但它崩溃了:
Uri startDir = Uri.fromFile(new File("/sdcard/DCIM/Camera"));
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(startDir);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
LogCat显示"找不到处理意图的活动"......
我最好的选择是什么?我希望用户能够看到文件夹的内容并能够单击文件(例如,单击视频并使用默认播放器启动它,单击PDF并打开它等).
以下是否有任何区别:
if (!bool_function()) {
void_function();
}
Run Code Online (Sandbox Code Playgroud)
和
bool_function() || void_function();
Run Code Online (Sandbox Code Playgroud)
除了可读性?
即使第二个函数返回void,我可以使用第二个形式吗?在所有基于C语言的编程语言(C++,C#,Java)中,void_function如果bool_function返回true ,它是否会被执行?
编辑:我问的原因是因为我的C编译器甚至没有给出任何警告,它按预期工作.我正在使用IAR Embedded Workbench IDE.
我有一个看起来像这样的代码(抱歉Java支架样式):
class SomeClass {
public static void doSomethingRisky() {
try {
SomeRiskyFunction();
} catch (Exception e) {
throw e;
}
}
}
class MainClass {
public void callSomethingRisky() {
try {
SomeClass.doSomethingRisky();
} catch (Exception e) {
FinallyHandleTheException(e);
}
}
}
Run Code Online (Sandbox Code Playgroud)
基本上,SomeClass将是一个库,我想设计它,以便所有异常将由调用程序处理(谁可能会或可能不会选择显示有关异常的消息).
我的问题是关于try/catch&throw在doSomethingRisky()from中的使用SomeClass.这是多余的还是有必要的?我的意思是,如果我将其关闭并且该函数在运行时遇到异常,它是否会使程序崩溃,因为没有捕获THAT函数内部的异常,或者它是否仍然将它传递给调用者(callSomethingRisky()),在那里它被优雅地处理?
Java的相同问题.谢谢!
我是GIT的新手,我无法弄清楚我的问题是否已经有了答案.在将其标记为重复之前,请仔细阅读.
我有一个分支,让我们称之为public,它被推送并与之同步origin.有一次,我创建了另一个分支,private它突然出现了public,因为我想做很多我想保密的工作.所以我只是工作private而且我做了,比方说,10次提交,直到我最终到达一个可以公开的状态.
现在,我显然不想进行快进合并,public因为所有中间提交都会出现在远程服务器上.rebase如果public分支没有从private创建点偏离,我该怎么做呢?
显然,我想在public分支上创建一个新的提交,其中包含来自10次private提交的所有修改.我知道这转化为a rebase,但我不知道该怎么做.
ios ×4
android ×2
c ×2
c# ×2
concurrency ×2
git ×2
java ×2
c++ ×1
cocoa-touch ×1
endianness ×1
git-branch ×1
git-push ×1
git-rebase ×1
libgdx ×1
objective-c ×1
robovm ×1