标签: multitasking

CPU线程、内核线程、操作系统线程、用户线程的区别

我已经阅读了很多关于并行性与并发性有何不同的文章,但我有很多问题,例如如何使用 Java 等编程语言实现并行性?

到目前为止,我所理解的是使用像 Java 这样的 VM 我们只能实现并发性,而并行性不在 JVM 的范围内,它的线程映射到(我在这里很困惑)操作系统线程或内核线程?

要了解多线程,需要了解 VM (JVM) 或进程的线程实际上是如何映射到 CPU 硬件的。请在这里帮忙。

如果我错了,请纠正我,以下是我认为我理解正确的几件事:

1. CPU 线程(英特尔超线程):通过在具有相同 ALU 的 CPU 中添加更多寄存器来提供硬件线程,因此实际上并不表现为双 CPU(如果 CPU 中有 2 个线程)和“只是”并发使用 ALU 可以掩盖(通过交错 MUXing 隐藏)主要无法提供真正的并行代码执行。

2. 内核线程:由内核启动,这些线程的数量可能比 CPU 线程多,但启动起来有点贵。

3. 操作系统线程:我不明白。我猜这就是您在调用本机线程时的意思,并且可能与之前的 #2(即内核线程)相同。

4. 用户线程:就像new Thread()在 JVM 或 .NET 中一样。我认为它们不被操作系统识别为线程,所以从并行性的角度来看,这里没有什么可以做的。

我需要了解 #4 中创建的线程如何映射到 #1,可能是 Windows/Linux/MacOS 的示例。

伙计们,我了解这个问题的范围有多大,但我可以接受简要信息并链接到任何详细文档。提前致谢。

java parallel-processing concurrency multithreading multitasking

6
推荐指数
1
解决办法
2101
查看次数

寻找与 async/await 配合使用的读写锁

我正在将旧应用程序移植到 .NET core。我需要一个读写锁(许多读取操作,偶尔写入操作)。我的旧代码是多线程的,所以旧的 ReaderWriterLock 工作得很好。新代码是基于任务的,因此我尝试采用异步/等待模式。

这让我想到了对锁定原语的需求。旧的锁定原语仅在您等待单个线程时才起作用。有一个具有任务感知能力的 SemaphoreSlim,但我不知道如何将其用于读写锁。

我发现了这个:AsyncReaderWriterLock,但我找不到任何使用示例或任何似乎正在使用它的人。如果我可以使用 Microsoft 的某些东西,我就不想使用 Stephen Cleary 的库。那么,这里有什么故事呢?是否有支持读写器锁定的.NET 多任务原语?我应该避免使用 AsyncReaderWriterLock 吗?有人见过它工作的例子吗?

.net multitasking

6
推荐指数
1
解决办法
3250
查看次数

iOS4上的多任务处理:它仅适用于iPhone吗?

我在iPod Touch第二代上安装了iOS 4.0.

绝对没有多任务工作.什么都没有进入后台,双击主页按钮只会导致任何结果.我想针对这个新功能测试我的应用程序,但它似乎不适用于iPod Touch设备?

这只适用于iPhone吗?或者是否有一些小的升级,如4.0.0.1,启用多任务?或者我必须手动启用它吗?

真奇怪.我完全像苹果公司在演示视频中所做的那样.

iphone ipod-touch multitasking

5
推荐指数
2
解决办法
344
查看次数

iPhone任务完成

我几天前开始为iPhone平台进行实验开发,在阅读它的多任务功能时,我发现了"任务完成",这非常有用.

我google了一下,阅读developer.apple.com/iphone上提供的文档,但仍然没有找到一些东西:有没有办法让这个任务完成运行一个循环(可能是一个无限的),或者一个计时器,它会每10分钟跑一次?

我知道这就像"作弊",他们可能有一些对策,但无论如何,尝试是一件好事:)

iphone objective-c multitasking

5
推荐指数
1
解决办法
2235
查看次数

iPhone应用程序应该关闭,而不是去背景

我有一个应用程序,当用户点击iPhone的中央按钮时,应用程序被发送到后台,但我希望它被关闭.

我可以手动事件并关闭它,但可能有一些配置设置拒绝在后台运行?

谢谢

iphone multitasking

5
推荐指数
1
解决办法
2310
查看次数

F#中的异步屏障

我在F#中编写了一个程序,它异步列出磁盘上的所有目录.异步任务列出给定目录中的所有文件,并创建单独的异步任务(守护程序:我使用Async.Start启动它们)以列出子目录.它们都将结果传递给中央邮箱处理器.

我的问题是,如何检测所有守护程序任务已完成,并且将不再有文件到达.基本上我需要一个障碍来完成我的顶级任务(直接和间接)孩子的所有任务.我在F#的异步模型中找不到类似的东西.

我所做的是创建一个单独的MailboxProcessor,我在其中注册每个任务的开始和终止.当活动计数变为零时,我就完成了.但我对这个解决方案不满意.还有其他建议吗?

f# synchronization functional-programming multitasking

5
推荐指数
1
解决办法
598
查看次数

考虑延迟和效率来分配任务的最佳方式

我正在寻找一种算法来分配一些任务.问题如下:

假设我有一个中央任务生产者和一些客户消费者.生产者生成任务并且消费者接受任务(对于初学者,一次一个),处理它们,并且当它们完成时,接受新任务(我已经有任务队列).

问题是,如果您考虑从生产者到消费者的任务延迟,将任务组合在一起可能是有意义的.例如,假设我们总共有10个任务和2个消费者.如果每个任务需要5毫秒来处理并且网络延迟也是5毫秒,则每个消费者每组发送2组5个任务将花费5毫秒+ 5*5毫秒= 30毫秒,而单独发送任务需要5*5毫秒+ 5*5ms = 50ms,因为每个任务都会出现延迟开销.

它不像分组那么简单,因为某些任务可能需要更长时间,并且将它们分开发送是有意义的,以便让其他消费者并行处理花费较短时间的其他任务.我打算做一些关于任务类型的统计数据.消费者的数量也不是一成不变的.

想要一个好的算法或一个好的阅读,可以帮助我实现这个目标吗?

algorithm optimization multitasking

5
推荐指数
1
解决办法
273
查看次数

iOS 7多任务处理和completionHandler

我熟悉iOS 7上的这个新功能,我有一个关于'completionHandler'的问题.正如文档所述,您的应用必须调用'completionHandler'并传递其中任何一个

UIBackgroundFetchResultNewData
UIBackgroundFetchResultNoData
UIBackgroundFetchResultFailed
Run Code Online (Sandbox Code Playgroud)

否则,您的应用程序将被暂停.

我的问题是,上面这些属性中的每一个如何影响系统?我的意思是,例如,如果您的更新失败并通过

completionHandler(UIBackgroundFetchResultFailed);
Run Code Online (Sandbox Code Playgroud)

然后你的应用程序被放置在"高"优先级队列或什么东西,以便在短时间内再次尝试或没有效果?

提前致谢.

objective-c multitasking ios7

5
推荐指数
1
解决办法
1005
查看次数

CPU注册和多任务处理

我正在学习汇编,我很困惑CPU注册如何与多任务处理一起工作.所以在多任务系统中.CPU可以随时暂停某个程序的执行并运行另一个程序.那么在这一步骤中如何保留寄存器值?寄存器是否被推入堆栈或其他任何方式?

x86 assembly operating-system cpu-registers multitasking

5
推荐指数
1
解决办法
1335
查看次数

Android:在多任务视图中隐藏应用程序内容

当用户进入Current Apps Manager时,有人知道如何隐藏应用程序的内容吗?这样的链接是针对ios的说明:http : //pinkstone.co.uk/how-to-control-the-preview-screenshot-in-the-ios-multitasking-switcher/

谢谢!

android privacy multitasking

5
推荐指数
2
解决办法
2289
查看次数