草庐IT

multithreading - Swift 有任何本地并发和多线程支持吗?

我正在编写一个Swift客户端来与嵌入式系统上的服务器(用C语言编写)进行通信。它与iOS/OSX无关,因为我使用的是最近发布的Ubuntu版本。Swift对并发有任何原生支持吗?我知道Apple不鼓励开发人员使用线程并鼓励通过GCD将任务移交给调度队列。问题是GCD似乎只适用于Darwin(而NSThread是Cocoa的一部分)。例如,C++11和Java将线程和并发作为其标准库的一部分。我知道平台特定的东西,比如unix上的posix可以在某种C包装器下使用,但对我来说,这首先破坏了使用Swift的意义(干净、易于理解的代码等)。 最佳答案

ios - 核心数据并发如何与 Swift 3 中的多线程一起工作?

在我的程序中,它同时使用了DispatchQueue.global(qos:.background)和self.concurrentQueue.sync(flags:.barrier)处理后台多线程问题。它是swift3,所以我使用最新的方法来获取childContext:lazyvarcontext:NSManagedObjectContext={return(UIApplication.shared.delegateas!AppDelegate).persistentContainer.newBackgroundContext()}()我还启用-com.apple.CoreData

iOS 多线程 - NSURLSession 和 UI 更新

我有一个关于iOS中多线程的一般性问题:在我非常简单的测试应用程序中,我使用NSURLSession从服务器下载一些小图像并将它们显示在表格View中。在NSURLSession的回调中,检索图像后,我调用tableview.reloadData()如下:varsession=NSURLSession.sharedSession().dataTaskWithURL(NSURL(url)){(data,response,error)->Voidin/*Processimageshere*/self.tableView.reloadData()}session.resume()图像几乎是即

java - 为什么我的多线程效率不高?

我设计了一个类,它使用不同数量的线程用整数填充数组,以便了解多线程的强大功能。但是根据我的结果,没有...想法:这个想法是用值“1”填充一个包含100000000个整数的数组。从1个线程开始(一个线程填充整个数组)并递增直到100个线程(每个线程填充一个大小为100000000/nbThreads的子数组)示例:对于10个线程,我创建了10个线程,每个线程填充一个包含10000000个整数的数组。这是我的代码:publicclassThreadedArrayFillingextendsThread{privateintstart;privateintpartitionSize;publ

java - 在 Java 多线程中使用 Timeout 避免死锁

在Java多线程中避免死锁情况的策略之一是使用超时。假设,一个线程已经获得了一个资源的锁,现在正在等待另一个资源的锁。在一定时间后,如果它不能获取资源2上的锁,那么它应该停止等待资源2上的锁。它还应该释放对资源1的锁定。这样就可以避免死锁。但是如何在Java中实现呢?如何显式“释放”锁?如何定义超时以等待锁定。什么是确切的java命令和语法。请问有什么HelloWorld的例子吗? 最佳答案 这是一个人为设计的示例,其中包含2个锁和2个尝试以不同顺序获取它们的线程。如果没有超时,代码就会死锁。publicstaticvoidmain

java - 试图找到专注于多线程的 Scala 教程

Scala似乎比Java有很多特性和改进。我很难把我想首先学习的关于Scala的东西隔离开来。例如,如果我只想采用for循环并使它们在多个线程或进程上运行,我应该在Google上寻找什么?我来自GPU计算背景,从中可以很容易地获得关于如何让事情运行得更快的高级View。 最佳答案 Scala的并行集合特别简单。并行化昂贵的操作f(i)在整数上i就这么简单,(1to10).par.map(i=>f(i))Scala将尝试分配与系统中可用的内核/处理器数量相当的工作线程数。这是包含更多详细信息的视频:http://days2010.sc

java - 多线程如何为 Java Servlet 工作?

这个问题在这里已经有了答案:Howdoservletswork?Instantiation,sessions,sharedvariablesandmultithreading(8个答案)关闭3年前。JavaServlet生命周期由servlet容器管理。当第一个web请求进来时,容器会加载Servlet类,调用它的init方法,然后调用它的service方法来处理这个web请求。它说只能有一个servlet类的实例。容器创建多个线程并管理这些线程来处理多个网络请求(这是我所知道的)。但我想了解,鉴于只有一个servlet类实例,多个线程如何运行并处理多个同时发生的Web请求。有人可以阐

java - 在多线程环境中交换变量

我最近被问到一个难倒我的问题。publicvoidswapEngine(Cara,Carb){Enginetemp=a.engine;a.engine=b.engine;b.engine=temp;}这不是线程安全的方法。如果线程1调用swapEngine(car1,car2),然后线程2调用swapEngine(car1,car3),则car2有可能结束使用car3的引擎。解决此问题最明显的方法是同步方法。同步该方法会带来潜在的低效率。如果线程1调用swapEngine(car1,car2)并且线程2调用swapEngine(car3,car4)会怎样?这两个线程绝不会相互干扰。在这

java - Java 服务器的单线程池还是多线程池?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭3年前。Improvethisquestion我正在编写一个相当复杂的Java服务器应用程序,除了通常的请求-响应处理之外,它还有一个重要的后台处理部分。一些后台处理是使用Quartz框架以类似cron的方式完成的。其他任务更多是按需完成的——如果有新客户端连接,它会创建额外的工作来偶尔更新它。cron任务也可以是多种多样的-一些监控外部应用程序,一些计算统计数据等等。我正在使用多个线程池来运行所有这些作业,我的想法是类似的作业将共享

java - 用 Java 编写多线程映射迭代器

我有一个通用的映射迭代器:像这样:classMapperimplementsIterator{privateIteratorinput;privateActionaction;publicMapper(input,action){...}publicbooleanhasNext(){returninput.hasNext();}publicTnext(){returnaction.process(input.next());}}现在,考虑到action.process()可能很耗时,我想通过使用多个线程并行处理来自输入的项目来提高性能。我想分配一个N个工作线程的池,并将项目分配给这些线