我的测试,当我退出(通过按下主页按钮)我的应用程序时,由于多任务功能,它仍然在后台"运行".但是,我希望在按下主页按钮时退出.这只发生在我身上吗?
无论如何,我已将其跟踪到app委托中applicationWillResignActive的applicationDidBecomeActive方法和方法.这些被称为多任务处理,但当我想终止时,应用程序"重新启动".非常感谢任何关于这个问题的指导!
我想在Micrium uC-OS/II下的Dynamic C中运行2个任务.一个任务是http处理程序,另一个是从串行端口读取.串口任务似乎禁止http任务运行.任何想法为什么会这样?我认为uC-OS/II是优先考虑的.
void httptask(void* ptr)
{
http_init();
while(1) {
http_handler();
}
}
void gpstask(void* ptr) {
int c;
while (1) {
c = serFgetc();
}
}
Run Code Online (Sandbox Code Playgroud)
两个线程都设置为相同的默认优先级.
reloadData在用户退出应用程序后,我希望我的UITableView能够再次激活我的应用程序.我知道我需要实现(在我的app委托中):
- (void)applicationDidBecomeActive:(UIApplication *)application
但我不知道如何引用当前的UITableView?
更新:我的UITableView是一个单独的控制器.它实际上呈现如下
AppDelegate > Root View Controller > Pushes UITabBarController modally which has a UITableViewController
Run Code Online (Sandbox Code Playgroud) 我知道这个话题已经讨论过,但是我一直看到相互矛盾的错误,而且我越来越迷失.
我只是想知道当我的应用程序在后台时会发生什么,并且它会收到推送通知.
我知道:
在前台 - 应用程序:didReceiveRemoteNotification:被调用,没有警报,徽章或声音.
未启动时 - 显示/播放警报,徽章和/或声音,如果用户点击通知的"查看/打开"(操作)按钮,则启动应用程序并调用application:didFinishLaunchingWithOptions:并且通知有效负载为传递,如果用户关闭通知并点击应用程序图标,则会调用相同的方法,但不会传递有关通知的信息.
而在背景 - 这是我困惑的地方.我需要知道在后台运行或暂停是否会产生影响,无论如何调用什么方法以及是否显示/播放警报,徽章和/或声音.
谢谢.
即使应用程序在后台,我也想使用以下功能?
- (void)stream:(NSStream *)theStream handleEvent:(NSStreamEvent)streamEvent
{
case NSStreamEventHasBytesAvailable:
{ NSLog(@"Event:NSStreamEventHasBytesAvailable");
if (theStream == _inputStream) {
NSLog(@"NSStreamEventHasBytesAvailable: on Input Stream");
uint8_t buffer[1024];
int len;
while ([_inputStream hasBytesAvailable]) {
len = [_inputStream read:buffer maxLength:sizeof(buffer)];
if (len > 0) {
NSString *output = [[NSString alloc] initWithBytes:buffer length:len encoding:NSASCIIStringEncoding];
if (nil != output) {
NSLog(@"server said: %@", output);
// to get local notification I am calling below method.
[self scheduleNotification];
}
}
}
}
break;
}
Run Code Online (Sandbox Code Playgroud)
上面的代码在foreGround中完成.我已经在apple文档中给出了所有更改,以在后台模式中运行应用程序 - voip.我应该在AppDelegate方法中写什么?
- (void)applicationDidEnterBackground:(UIApplication *)application
{
} …Run Code Online (Sandbox Code Playgroud) 我想创建一个程序来抓取并检查我的网站是否存在http错误和其他内容.我想用多个线程来做这件事,这些线程应该接受像抓取的url这样的参数.虽然我希望X线程处于活动状态,但是已经有Y任务等待执行.
现在我想知道执行此操作的最佳策略是什么:ThreadPool,Tasks,Threads甚至是其他什么?
我编写了方法,它从许多来源向List添加元素.见下文:
public static async Task<List<SearchingItem>> GetItemsToSelect()
{
List<SearchingItem> searchingItems = new List<SearchingItem>();
foreach (Place place in await GetPlaces())
{
searchingItems.Add(new SearchingItem() {
IdFromRealModel=place.Id, NameToDisplay=place.FullName,
ExtraInformation=place.Name, TypeOfSearchingItem=TypeOfSearchingItem.PLACE });
}
foreach (Group group in await GetGroups())
{
searchingItems.Add(new SearchingItem()
{
IdFromRealModel = group.Id, NameToDisplay = group.Name,
ExtraInformation = group.TypeName, TypeOfSearchingItem = TypeOfSearchingItem.GROUP
});
}
return searchingItems;
}
Run Code Online (Sandbox Code Playgroud)
我测试了这种方法,并且有效地工作.我想,它的工作原理propertly,因为GetPlaces方法返回160元和GetGroups返回3000但是,我在想,如果,如果方法返回的同时元素会工作.我应该锁定列表searchItems吗?
谢谢你的建议.
我正在研究用户级线程和内核级线程之间的差异,我基本上理解这一点.
我不清楚的是完全实现用户级线程的重点.
如果内核不知道单个进程中存在多个线程,那么我可以体验到哪些好处?
我已经阅读了几篇文章,声明只有当这样的线程不执行阻塞操作(这会导致整个进程被阻塞)时,建议用户级别的线程实现.
这就是说,考虑到它们无法利用多个处理器和独立调度,所有线程的顺序执行和它们的"并行"执行之间的区别是什么?
回答之前提出的问题(类似于我的问题)是这样的:
没有现代操作系统实际上将
n用户级线程映射到1内核级线程.
但由于某种原因,互联网上的许多人都声称用户级线程永远不会利用多个处理器.
你能帮我理解一下吗?
我想确保在执行100个任务的5个线程上执行任务的平均时间.
为了节省时间,我使用了 nanoTime()
任务是调用一个特定的方法,让我们调用它foo();
我不创建任何其他类.
在我的代码中,我创建了一个任务:
Runnable thExecute = new Runnable(){
@Override
public void run(){
foo();
}
};
Run Code Online (Sandbox Code Playgroud)
然后我创建一个线程:
Thread th = new Thread(thExecute);
long start = System.nanoTime();
th.run();
long stop = System.nanoTime();
Run Code Online (Sandbox Code Playgroud)
如果我有与线程相同数量的任务,这将是很好的.我试图创建线程和任务的数组:
Runnable[] thExecutes = new Runnable[100];
Thread[] ths = new Thread[5];
Run Code Online (Sandbox Code Playgroud)
但现在我不知道接下来该做什么.我知道他们应该以某种方式排队,可能我应该Executor上课.我使用Java 6.
编辑:起初我并不是说我写的东西.现在我知道我想要平均时间+最长时间.
java multithreading executorservice multitasking threadpoolexecutor
如何检查线程在C ++ 11及更高版本中是否已完成工作?我正在阅读文档,并编写了以下代码:
#include <iostream>
#include <thread>
void mythread()
{
//do some stuff
}
int main()
{
std::thread foo(mythread);
if (foo.joinable())
{
foo.join();
//do some next stuff
}
}
Run Code Online (Sandbox Code Playgroud)
joinable 仅告诉线程已开始工作,但我想知道如何编写代码以检查线程是否已完成工作。
例如:
#include <iostream>
#include <thread>
void mythread()
{
//do some stuff
}
int main()
{
std::thread foo(mythread);
if (foo.finishedWork())
{
foo.join();
//do some next stuff
}
}
Run Code Online (Sandbox Code Playgroud) multitasking ×10
ios ×3
c# ×2
cocoa-touch ×2
iphone ×2
async-await ×1
asynchronous ×1
background ×1
c ×1
c++ ×1
c++11 ×1
embedded ×1
ios4 ×1
java ×1
micrium ×1
objective-c ×1
rtos ×1
sockets ×1
uitableview ×1