Tag: multithreading

什么是重入锁和概念?

我总是感到困惑。 有人会解释不同情况下的折返意味着什么? 你为什么要使用可重入和不可重入? 说pthread(posix)locking原语,他们是否重入? 使用它们应该避免哪些缺陷? 互斥体是否可重入?

线程池在C + + 11

相关问题 : 关于C ++ 11: C + + 11:std ::线程池? C ++ 11中的async(launch :: async)是否会使线程池过时,以避免昂贵的线程创build? 关于Boost: C ++ boost线程重用线程 boost ::线程并创build它们的池! 我如何获得一个线程池来发送任务 ,而不是一遍又一遍地创build和删除它们? 这意味着持久线程不join就重新同步。 我有这样的代码: namespace { std::vector<std::thread> workers; int total = 4; int arr[4] = {0}; void each_thread_does(int i) { arr[i] += 2; } } int main(int argc, char *argv[]) { for (int i […]

在哪里停止/销毁Android服务类中的线程?

我已经通过以下方式创build了一个线程服务: public class TCPClientService extends Service{ … @Override public void onCreate() { … Measurements = new LinkedList<String>(); enableDataSending(); } @Override public IBinder onBind(Intent intent) { //TODO: Replace with service binding implementation return null; } @Override public void onLowMemory() { Measurements.clear(); super.onLowMemory(); } @Override public void onDestroy() { Measurements.clear(); super.onDestroy(); try { SendDataThread.stop(); } catch(Exception e){ […]

如果线程共享相同的PID,那么它们如何被识别?

我有一个查询相关的Linux中的线程的实现。 Linux没有明确的线程支持。 在用户空间中,我们可以使用线程库(如NPTL)来创build线程。 现在,如果我们使用NPTL它支持1:1映射。 内核将使用clone()函数来实现线程。 假设我已经创build了4个线程。 那么这就意味着: 将会有4个task_struct 。 在task_struct内部,将根据要克隆的参数(CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND)提供共享资源。 现在我有以下查询: 4个线程是否有相同的PID? 如果有人可以详细说明,PID是如何分享的。 如何确定不同的线索; 有没有一些TID(线程ID)的概念?

在python中处理多个进程中的单个文件

我有一个单一的大文本文件,我想处理每一行(做一些操作)并将它们存储在数据库中。 由于一个简单的程序花费的时间太长,我希望通过多个进程或线程完成。 每个线程/进程应该读取来自单个文件的不同的数据(不同的行),并对他们的数据(行)进行一些操作,并把它们放到数据库中,这样最后我处理了整个数据,数据库被转储我需要的数据。 但我无法弄清楚如何解决这个问题。

如果asynchronous等待不会创build任何其他线程,那么它如何使应用程序响应?

一次又一次,我看到它说,使用async – await不会创build任何额外的线程。 这是没有道理的,因为电脑似乎一次只能做多件事情的唯一方法是 实际上一次做多个事情(并行执行,使用多个处理器) 通过调度任务并在它们之间切换来进行模拟(做一些A,一点B,一点A等等) 所以如果async – await都没有,那么它如何使应用程序响应? 如果只有一个线程,那么调用任何方法意味着在执行其他任何操作之前等待该方法完成,并且该方法中的方法在继续之前必须等待结果,等等。

什么时候应该使用互斥体,什么时候应该使用信号量

我们什么时候应该使用互斥量,什么时候应该使用信号量?

用c ++ 11等价物replaceboost :: thread和boost :: mutex是否明智?

动机:我考虑的原因是我的天才项目经理认为提升是另一个依赖,它是可怕的,因为“你依靠它”(我试图解释提升的质量,然后放弃了一段时间:( )。为什么我想要做的更小的原因是我想学习c ++ 11的特性,因为人们会开始编写代码,所以: 在#include<thread> #include<mutex>和boost等价物之间是否存在1:1映射? 你会考虑一个好主意,用c + + 11replace提升的东西 东东。 我的用法是原始的,但有没有例子时,标准不提供什么提升呢? 或者(亵渎)反之亦然? PS我使用GCC所以标题在那里。

Python:线程和多处理模块之间有什么区别?

我正在学习如何在Python中使用threading和multiprocessing模块来并行运行某些操作,并加速我的代码。 我发现这很难(也许是因为我没有任何理论背景)来理解threading.Thread()对象和multiprocessing.Process()之间的区别。 此外,我不完全清楚如何实例化一个作业队列,并且只有4个(例如)它们并行运行,而另一个则等待资源释放,然后再执行。 我在文档中find清楚的例子,但不是很详尽; 只要我尝试使事情变得复杂一些,就会收到很多奇怪的错误(比如不能被腌制的方法等等)。 那么,我应该什么时候使用threading和multiprocessing模块呢? 你能把我和一些资源联系起来解释这两个模块背后的概念,以及如何正确使用它们来完成复杂的任务吗?

何时使用enumerateObjectsUsingBlock与for

除了明显的区别之外: 当你需要索引和对象时,使用enumerateObjectsUsingBlock 当你需要修改局部variables时,不要使用enumerateObjectsUsingBlock (我错了,请看bbum的答案) 是否enumerateObjectsUsingBlock一般认为更好或更糟的时候for (id obj in myArray)也将工作? 有什么优点/缺点(例如,它或多或less的性能)?