Questions tagged «multithreading»

多线程是计算机或程序通过利用多个并发的执行流(通常称为线程)来并发或异步执行工作的能力。

6
可以在单个处理器系统上实现多线程吗?
我一直遵循这样的概念,即多线程只能在多处理器系统上实现,在该系统上,每个线程分配一个以上的处理器,并且每个线程可以同时执行。在这种情况下,没有调度,因为每个线程都有各自专用的资源。但是我经常在一个可以在单处理器系统上执行多线程的地方阅读它。这是对的吗?如果是,那么单处理器和多处理器系统之间有什么区别?


4
软件线程与硬件线程
软件线程,硬件线程和Java线程之间有什么区别? 软件线程,Java线程和硬件线程是独立的还是相互依赖的?我问这个问题是因为,我知道Java线程是在jvm(java.exe)的进程内部创建的。 这些不同的进程是在不同的硬件线程上执行的吗?

2
id = 1-id是原子吗?
在OCP Java SE 6程序员实践考试的第291页中,问题25: public class Stone implements Runnable { static int id = 1; public void run() { id = 1 - id; if (id == 0) pick(); else release(); } private static synchronized void pick() { System.out.print("P "); System.out.print("Q "); } private synchronized void release() { System.out.print("R "); …

2
C ++ 11:为什么std :: condition_variable使用std :: unique_lock?
std::unique_lock与一起工作时的角色使我有些困惑std::condition_variable。据我了解的文档,std::unique_lock它基本上是一个ated肿的锁卫士,可以在两个锁之间交换状态。 到目前为止,我已经pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex)为此目的使用过(我猜这就是STL在posix上使用的功能)。它需要一个互斥锁,而不是锁。 这有什么区别?是std::condition_variable处理std::unique_lock优化的事实吗?如果是这样,它到底有多快?

3
Android中的线程示例
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow的主题。 5年前关闭。 改善这个问题 我想要一些关于线程创建和在android中调用线程的简单示例。

4
如何在不影响其他线程的情况下休眠node.js中的线程?
根据了解node.js事件循环,node.js支持单线程模型。这意味着,如果我对node.js服务器发出多个请求,它将不会为每个请求生成一个新线程,而是将一个接一个地执行每个请求。这意味着,如果我对node.js代码中的第一个请求执行以下操作,同时在节点上有一个新请求进入,则第二个请求必须等待直到第一个请求完成,包括5秒的睡眠时间。对? var sleep = require('sleep'); sleep.sleep(5)//sleep for 5 seconds 有没有一种方法,node.js可以为每个请求生成一个新线程,从而使第二个请求不必等待第一个请求完成,或者我只能在特定线程上调用sleep吗?

4
是System.out.println的多线程输出是否交错
如果多个线程在不同步的情况下调用System.out.println(String),输出是否可以交错?还是每行的写入都是原子的?该API只字不提同步的,所以这似乎是可能的,或者是由交错缓冲和/或虚拟机存储器模型等防止输出? 编辑: 例如,如果每个线程包含: System.out.println("ABC"); 保证输出是: ABC ABC 或者可能是: AABC BC

2
可能是RejectedExecutionException的原因
我在雄猫服务器(+ liferay)上收到此异常 java.util.concurrent.RejectedExecutionException 我的课是这样的: public class SingleExecutor extends ThreadPoolExecutor { public SingleExecutor(){ super(1, 1,0L, TimeUnit.MILLISECONDS,new LinkedBlockingQueue<Runnable>()); } @Override public void execute(Runnable command) { if(command instanceof AccessLogInsert){ AccessLogInsert ali = (AccessLogInsert)command; ali.setConn(conn); ali.setPs(ps); } super.execute(command); } } 我在行上收到此异常,super.execute(command); 当队列已满但LinkedBlockingQueue大小为2 ^ 31时,可能会发生此错误,并且我确定没有太多命令在等待。 一开始一切都稳定,但在我重新部署战争后,一切开始发生。此类不是战争的一部分,而是放在tomcat / lib中的jar中。 您是否知道为什么会发生这种情况以及如何解决?

5
用户级线程和内核支持的线程之间的区别?
我一直在浏览基于该主题的一些说明,尽管我对线程有一个总体的了解,但是我不确定是用户级别线程还是内核级别线程之间的区别。 我知道进程基本上是由多个线程或单个线程组成的,但是这些线程是前面提到的两种类型吗? 据我了解,内核支持的线程可以访问内核以进行系统调用和用户级线程无法使用的其他用途。 那么,用户级线程是否仅仅是程序员在使用内核支持的线程执行由于其状态而无法正常执行的操作时创建的线程?

5
为什么OpenMP不允许!=运算符?
我正在尝试编译以下代码: #pragma omp parallel shared (j) { #pragma omp for schedule(dynamic) for(i = 0; i != j; i++) { // do something } } 但我收到以下错误:错误:控制谓词无效。 该OpenMP的标准规定,对于parallel for构造它“仅仅”允许以下的运营商之一:<,<=,> >=。 我不明白不允许这样做的理由i != j。对于,我可以理解,static schedule因为编译器需要预先计算分配给每个线程的迭代次数。但是我不明白为什么在这种情况下会出现这种限制。有什么线索吗? 编辑:即使我做了for(i = 0; i != 100; i++),尽管我可以放“ <”或“ <=”。


6
如何在Python中停止循环线程?
告诉循环线程停止循环的正确方法是什么? 我有一个相当简单的程序,可以在单独的threading.Thread类中对指定的主机执行ping操作。在此类中,它休眠60秒,然后再次运行,直到应用程序退出。 我想在自己的计算机上实现一个“停止”按钮,wx.Frame以要求循环线程停止。它不需要立即结束线程,它只要唤醒就可以停止循环。 这是我的threading课程(请注意:我尚未实现循环,但它可能属于PingAssets中的run方法) class PingAssets(threading.Thread): def __init__(self, threadNum, asset, window): threading.Thread.__init__(self) self.threadNum = threadNum self.window = window self.asset = asset def run(self): config = controller.getConfig() fmt = config['timefmt'] start_time = datetime.now().strftime(fmt) try: if onlinecheck.check_status(self.asset): status = "online" else: status = "offline" except socket.gaierror: status = "an invalid asset tag." …

10
如何限制Python中函数调用的执行时间
我的代码中有一个与套接字相关的函数调用,该函数来自另一个模块,因此不受我的控制,问题是它有时阻塞数小时,这是完全不可接受的,如何限制我代码中函数的执行时间?我猜该解决方案必须利用另一个线程。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.