Questions tagged «multithreading»

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

12
如果我在同一个类上同步了两个方法,它们可以同时运行吗?
如果我在同一个类上同步了两个方法,那么它们可以同时在同一个对象上运行吗?例如: class A { public synchronized void methodA() { //method A } public synchronized void methodB() { // method B } } 我知道我不能methodA()在两个不同的线程中的同一对象上运行两次。在methodB()。 但是我可以methodB()在methodA()仍然运行时在其他线程上运行吗?(相同的对象)

9
在.NET中创建阻塞Queue <T>?
我有一个场景,其中有多个线程添加到队列中,并且有多个线程从同一队列中读取。如果队列达到特定大小,则添加队列时将阻塞正在填充队列的所有线程,直到从队列中删除一项为止。 下面的解决方案是我现在正在使用的解决方案,我的问题是:如何改进?是否有一个对象已经在我应该使用的BCL中启用此行为? internal class BlockingCollection&lt;T&gt; : CollectionBase, IEnumerable { //todo: might be worth changing this into a proper QUEUE private AutoResetEvent _FullEvent = new AutoResetEvent(false); internal T this[int i] { get { return (T) List[i]; } } private int _MaxSize; internal int MaxSize { get { return _MaxSize; } set …




1
为什么不带“ Thread.sleep”的“ while(true)”在Linux上导致100%的CPU使用率,而在Windows上却没有?
我用Java创建了一个简单的程序: public static void main(String[] args) throws InterruptedException { while (true) ; } 如果我在Linux机器上运行此程序,它会显示100%的CPU使用率,但不会导致操作系统显示缓慢。但是,如果我在Windows上运行完全相同的代码,则仅显示约20%的CPU使用率。 我在Windows上使用Oracle JRE,在Linux上使用OpenJDK 6。 我想知道Windows的调度程序是否会随机抢占线程,而Linux的不是吗?

7
实现C#通用超时
我正在寻找实现通用方法以使单行(或匿名委托)代码超时执行的好主意。 TemperamentalClass tc = new TemperamentalClass(); tc.DoSomething(); // normally runs in 30 sec. Want to error at 1 min 我正在寻找一种可以在我的代码与气质代码进行交互的许多地方优雅地实现的解决方案(我无法更改)。 另外,如果可能的话,我想阻止令人讨厌的“超时”代码进一步执行。


10
此线程连接代码是什么意思?
在这段代码中,两个join和break是什么意思?t1.join()导致t2停止直到t1终止? Thread t1 = new Thread(new EventThread("e1")); t1.start(); Thread t2 = new Thread(new EventThread("e2")); t2.start(); while (true) { try { t1.join(); t2.join(); break; } catch (InterruptedException e) { e.printStackTrace(); } }

5
迭代ConcurrentHashMap值线程安全吗?
在javadoc中,ConcurrentHashMap如下: 检索操作(包括get)通常不会阻塞,因此可能与更新操作(包括put和remove)重叠。检索反映了自发生以来最新完成的更新操作的结果。对于诸如putAll和clear的聚合操作,并发检索可能仅反映某些条目的插入或删除。同样,迭代器和枚举返回的元素反映了在创建迭代器/枚举时或此后某个时刻哈希表的状态。他们不抛出ConcurrentModificationException。但是,迭代器被设计为一次只能由一个线程使用。 这是什么意思?如果我尝试同时使用两个线程迭代地图,会发生什么情况?如果在迭代过程中从地图上放置或删除值会怎样?


2
Python线程字符串参数
我在使用Python线程并在参数中发送字符串时遇到问题。 def processLine(line) : print "hello"; return; 。 dRecieved = connFile.readline(); processThread = threading.Thread(target=processLine, args=(dRecieved)); processThread.start(); 其中dRecieved是连接读取的一行的字符串。它调用了一个简单的函数,到目前为止,该函数仅具有打印“ hello”的一项工作。 但是我收到以下错误 Traceback (most recent call last): File "C:\Python25\lib\threading.py", line 486, in __bootstrap_inner self.run() File "C:\Python25\lib\threading.py", line 446, in run self.__target(*self.__args, **self.__kwargs) TypeError: processLine() takes exactly 1 arguments (232 given) 232是我尝试传递的字符串的长度,因此我猜想它会将其分解成每个字符并尝试传递类似的参数。如果我只是正常调用该函数,它将很好用,但是我真的想将其设置为单独的线程。



7
用c ++ 11等效项替换boost :: thread和boost :: mutex是否明智?
动机:我正在考虑的原因是,我的天才项目经理认为boost是另一种依赖,并且它很可怕,因为“您依赖它”(我试图解释boost的质量,然后过了一段时间就放弃了:( )。我之所以愿意这样做的较小原因是我想学习c ++ 11的功能,因为人们将开始在其中编写代码。 #include&lt;thread&gt; #include&lt;mutex&gt;和Boost等价物之间是否存在1:1映射? 您是否认为用c ++ 11的 东西代替boost的东西是个好主意?我的用法是原始的,但是有没有一些示例说明std不提供什么功能呢?或(亵渎)反之亦然? PS我使用GCC,所以标题在那里。

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.