自从我在2008年开始编码以来,我沉迷于它,我今天仍然.通常不是一天过去我不接触一些代码.我的意思到底是什么......我很快就会答应,我保证.我已经写了大约一年的PHP,我非常喜欢它和HTML 2,我无法得到它们.但是,我想将我的技能扩展到更大的领域.目前,我发现HTML真的很无聊,实际上UI(特别是HTML)是我想要做的项目的一部分.我知道一些Ruby,Python,java,C和Perl; 但是我希望能够像PHP一样熟练掌握其中的一些.
我想主要关注Ruby/ROR并学习Objective-C/Cocoa.我从英阳那里得到了书,但我还没有完全读完它们中的任何一本.
最后有什么问题,我可以在世界上如何专注于所有这一切,同时继续做我正在使用的PHP(正在制作中型应用程序).我有决心,我不会去任何地方(我要年轻,不喜欢死或什么),任何提示?
当我将应用程序移动到后台并将其恢复到前台时,我遇到活动指示器冻结的问题.当应用程序移动到后台时,应用程序可以通过网络加载一些数据.因此,我向用户显示活动指示器.我添加了代码以确保任务在后台完成.当应用程序立即进入前台并且数据未完全加载时,微调器停留在屏幕上但它停止旋转.数据完全加载后,微调器就会消失.
知道活动指标冻结的原因以及可能的解决方案.
谢谢.
我有一个应用程序,使用Core Data开始导入数据.在应用程序的这一部分中,我通过在设置标志时调用applicationDidEnterBackground中的exit(0)来禁用恢复(多任务处理).例如:
-(void)applicationDidEnterBackground:(UIApplication *)application {
if (allowResuming==NO){
NSLog(@"Terminating...");
exit(0);
}
}
Run Code Online (Sandbox Code Playgroud)
如果我在按下主页按钮后11秒内尝试"恢复"应用程序(通过按下其图标)(因此,已经调用退出(0)),应用程序崩溃.在通过调试器运行时不会发生这种情况,但是崩溃日志表明应用程序正在尝试从中断处继续数据导入,这当然不是我想要的.
在此次崩溃之后(即在一秒钟内)尝试再次"恢复"应用程序是成功的.
如果我试图在11秒后'恢复'应用程序,那很好.
如果有人有任何想法和/或能指出我正确的方向,我将非常感激.
我决定学习C,这是我使用的其中一本书的片段:
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
int main()
{
pid_t result = fork();
if (result == -1){
fprintf(stderr, "Error\n");
return 1;
}
if (result == 0)
printf("I'm a child with PID = %d\n", getpid());
else
printf("I'm a parent with PID = %d\n", getpid());
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它的输出是:
I'm a parent with PID = 5228
I'm a child with PID = 5229
Run Code Online (Sandbox Code Playgroud)
一切都清楚,但怎么可能是result == 0和result != 0在同一时间?看起来这个变量存储了两个值,因为printf指令执行了两次.我知道,那会fork()返回0父亲的PID,但是如何result检查它是否在不同条件下返回true?
我想使用异步任务同时执行多个循环(我不想使用Parallel.ForEach)
我做 :
static async void Run()
{
await MultiTasks();
}
static async Task MultiTasks()
{
var Loop1 = Loop1Async();
var Loop2 = Loop2Async();
await Loop1;
await Loop2;
}
static async Task Loop1Async()
{
for (int i = 0; i < 500; i++)
{
Console.WriteLine("Loop 1 : " + i);
}
}
static async Task Loop2Async()
{
for (int i = 0; i < 500; i++)
{
Console.WriteLine("Loop 2 : " + i);
}
}
Run Code Online (Sandbox Code Playgroud)
Run() 在我的Main方法中调用.
但是这两个循环不会在同一时间执行.第一圈完成后,第二圈开始 …
例如,要实现像unix或NT这样的操作系统,支持基于时间片切换不同的任务,cpu应该有什么样的硬件支持?
intel 80286是否开始支持带有时钟中断的“抢占式”任务的执行?实现这一目标还需要哪些硬件功能?
operating-system cpu-architecture task multitasking preemptive
我需要同时完成5个任务,一次执行最多2个任务.因此,一旦某个任务完成,下一个应该运行,直到没有任务待处理.
我正在使用LB的解决方案,该解决方案涉及使用信号量来跨任务同步.
void LaunchTaskPool ()
{
SemaphoreSlim maxThreadSemaphore = new SemaphoreSlim(2); //Max 2 tasks at a time.
for (int i = 0; i < 5; i++) //loop through 5 tasks to be assigned
{
maxThreadSemaphore.Wait(); //Wait for the queue
Console.WriteLine("Assigning work {0} ", i);
Task t = Task.Factory.StartNew(() =>
{
DoWork(i.ToString()); // assign tasks
}, TaskCreationOptions.LongRunning
)
.ContinueWith(
(task) => maxThreadSemaphore.Release() // step out of the queue
);
}
}
void DoWork(string workname)
{ …Run Code Online (Sandbox Code Playgroud) 目前,我很难理解使用异步和等待模式的多任务处理.为了测试一个案例,我编写了以下代码来理解一些基础知识;
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private int global_int = 10;
public async Task<int> RunAsyncTask()
{
// This method runs asynchronously.
await Task.Run(() => Calculate());
return global_int;
}
private int Calculate()
{
Console.WriteLine("Ticket count: " + --global_int);
return global_int;
}
private async void Start_Button_Click(object sender, RoutedEventArgs e)
{
List<Task<int>> list = new List<Task<int>>();
Console.WriteLine("\nReseting: " );
global_int = 10;
for (int i = 0; i < 10; i++)
{
var task = RunAsyncTask(); …Run Code Online (Sandbox Code Playgroud) 正如代码注释所要求的那样。我不知道为什么等待“continuation.Result”的主线程在打印出它的值之前有值。
static void Main(string[] args)
{
Task<string> antecedent = Task.Delay(5000).ContinueWith<string>(x =>
{
Console.WriteLine("return in task1 {0}", Thread.CurrentThread.ManagedThreadId);
return DateTime.Today.ToShortDateString();
});
Task<string> continuation = antecedent.ContinueWith(x =>
{
x.Wait(1000);
Console.WriteLine("return in task2 {0}{1}",Thread.CurrentThread.ManagedThreadId,x.Status);
return "Today is " + antecedent.Result;
});
Console.WriteLine("this will print before the result");
Console.WriteLine(continuation.Result); //why this waiting ?
Console.ReadKey();
}
Run Code Online (Sandbox Code Playgroud) 我想开发一个具有多任务的Android音乐播放器应用程序,所以我可以使用不同的应用程序,而无需关闭音乐播放器......帮助输出plzz ..