小编Sol*_*low的帖子

java中的"重入"

可重入意味着在每个线程而不是每次调用的基础上获取锁.

由于线程持有内部锁,这不意味着线程运行一次等于调用基础吗?

谢谢,似乎意味着:在一个线程中,如果我lockAdoA调用函数的过程函数中得到一个锁doB,并且doB还需要一个锁lockA,那么就会有一个可重入.在Java中,每个线程都会获得这种现象,所以我不需要考虑死锁?

java reentrancy

42
推荐指数
3
解决办法
1万
查看次数

什么是wxPython最好的实时绘图小部件?

我想用Python和wxPython显示一条带有一条或两条曲线的实时图表,每秒最多50个样本.该小部件应该支持Win32和Linux平台.

任何提示都是受欢迎的.

编辑添加:

我不需要以50 fps更新显示,但需要在两条曲线上显示多达50个数据样本,并且显示器的更新速率合理(5..10 fps应该没问题).

编辑添加:

我在一个项目中使用了mathplotlib取得了很好的成功.然后我为其他项目选择了wx.lib.plot,我发现它更简单,但更容易使用并且消耗更少的CPU周期.由于wx.lib是标准wxPython发行版的一部分,因此特别容易使用.

python wxwidgets wxpython

14
推荐指数
3
解决办法
3万
查看次数

如何在Java应用程序中显示图像

我想在我的Java应用程序中显示一个图像.我找到了一个代码,用于从网络服务器下载图像并在jframe中显示它.

我想使用标签来显示图像或其他内容.它不应该是JFrame.

这是我的代码:

Image image = null;
try {
    URL url = new URL(
        "http://www.personal.psu.edu/acr117/blogs/audrey/images/image-2.jpg");
    image = ImageIO.read(url);
} catch (IOException e) {
}

// Use a label to display the image
JFrame frame = new JFrame();

JLabel lblimage = new JLabel(new ImageIcon(image));
frame.getContentPane().add(lblimage, BorderLayout.CENTER);
frame.setSize(300, 400);
frame.setVisible(true);
Run Code Online (Sandbox Code Playgroud)

有人能帮我吗?

java swing image

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

无限循环与无限递归。都不确定吗?

没有副作用的无限循环是不确定的行为。有关cppreference的示例,请参见此处。更简单的例子:

int foo() {
    while(true) {}
    return 42;
}
Run Code Online (Sandbox Code Playgroud)

现在考虑几乎相等

int bar() {
    if (true) return bar();
    return 42;
}
Run Code Online (Sandbox Code Playgroud)

这还会调用未定义的行为吗?

或用不同的措辞:根据语言,无限递归属于哪类错误?

PS:请注意,我知道运行时的含义:循环原则上可以永远运行,而递归最终将导致stackoverflow。尽管我主要对编译器对它们的操作感兴趣。也许是一个相当学术性的问题...

c++ recursion loops undefined-behavior language-lawyer

7
推荐指数
1
解决办法
332
查看次数

如何在Python中打开<del>命名管道</ del>字符设备专用文件进行读写

我有一个在Linux机器上运行的服务,可以创建一个 命名管道 字符设备特殊文件,我想编写一个Python3程序,通过编写文本命令和阅读文本回复来与服务进行通信 设备.我没有该服务的源代码.

我可以使用os.open(named_pipe_pathname, os.O_RDWR),我可以使用os.read(...)os.write(...)读取和写入,但这是一个痛苦,因为我必须编写自己的代码来转换字节和字符串,我必须编写自己的readline(...)函数,等等.

我宁愿使用Python3 io对象来读写 设备,但我能想到创建一个的方式返回相同的错误:

io.UnsupportedOperation: File or stream is not seekable.
Run Code Online (Sandbox Code Playgroud)

例如,如果我尝试的话open(pathname, "r+"),我会收到该消息,如果我尝试fd=os.open(...)后跟,我会收到相同的消息os.fdopen(fd, "r+", ...).

问:Python3程序在文本中写入和读取文本的首选方法是什么? 命名管道 角色设备?


编辑:

哎呀!我假设我正在处理一个命名管道,因为该服务的文档将其描述为"管道",因为它在用户模式服务运行之前不会出现在文件系统中.但是,Linux file实用程序说它实际上是一个字符设备特殊文件.

python linux python-3.x

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

LocalDumps注册表项停止工作(Windows错误报告)

如MSDN所述,我设置了注册表项HKLM \ SOFTWARE \ Microsoft \ Windows \ Windows错误报告\ LocalDumps 。

我有一个测试程序-一个用Visual C ++编译的控制台程序,该程序尝试在打印消息并退出之前取消引用NULL指针。该测试程序曾经用于退出和转储核心文件,但现在它刚刚退出。我没有核心。

我在物理硬件上运行Windows Server 2008 R2 Enterprise SP1。

我不知道发生了什么变化。有什么变化可以阻止WER现在转储内核?

windows crash-dumps windows-error-reporting

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

ThreadPoolExecutor不执行所有任务

我有一个ThreadPoolExecutor- corePoolSize = 5,maxPoolSize = 10 queueSize = 10,keepAlive = 1000秒。我正在执行100 Runnable任务。实际执行的任务数量各不相同,并非全部执行。RejectionHandler也没有任何报告。我相信我对ThreadPoolExecutor的理解是错误的。有谁能够帮助我?如何执行所有任务?

import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.Executors;
import java.util.concurrent.RejectedExecutionHandler;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

public class TestThreadPoolExecutor {
    public static void main(String[] args) {
     ThreadFactory threadFactory =  Executors.defaultThreadFactory();
    ArrayBlockingQueue<Runnable> arrayBlockingQueue = new ArrayBlockingQueue<Runnable>(10);

    ThreadPoolExecutor threadPoolExecutor =  new ThreadPoolExecutor(5, 10,1000, TimeUnit.SECONDS, arrayBlockingQueue, threadFactory, new RejectedExecutionHandlerImpl());
    MonitorThread monitor = new MonitorThread(threadPoolExecutor, 3);
    Thread monitorThread = new Thread(monitor);
    monitorThread.start();
    for (int i = 0; i < 100; i++) {
        threadPoolExecutor.execute(new …
Run Code Online (Sandbox Code Playgroud)

java multithreading

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

做同步java方法队列调用?

我已经阅读了有关同步方法的oracle doc以及它们如何为多线程程序引入锁定,但有一件事我不清楚.对已经锁定的方法的后续调用是否排队?

让我们说我们有一个班级:

class Astore {
    ...
    public synchronized void a() {
        doSomethingTimeConsuming();
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

和3个调用astore.a()的线程

final Astore astore = new Astore();

Thread t1 = new Thread(new Runnable() {
    public void run() { 
        astore.a();
        doSomethingElse();
        astore.a();
    }
});
t1.start();

Thread t2 = new Thread(new Runnable() {
    public void run() {
        astore.a();
    }
});
t2.start();

Thread t3 = new Thread(new Runnable() {
    public void run() {
        astore.a();
    }
});
t3.start();
Run Code Online (Sandbox Code Playgroud)

我不确定我是否正确地做了这个例子,但重点是,3个线程几乎同时使用synchronized方法调用同一个对象.

将操作顺序存储在队列中,以便线程调用将是:

  1. t1(因为它被称为第一)
  2. t2(在T1之后调用)
  3. T3
  4. 再次t1(当其他线程请求方法时,它正忙着用A做某事)

我可以安全地假设这将是行为,或者不能保证这将是顺序(或者更糟糕的是,t2和t3可能以随机顺序被调用)

当多个线程可能需要共享数据时的最佳实践是什么(例如,每个活动连接有一个线程的套接字服务器 - …

java multithreading synchronized

4
推荐指数
1
解决办法
1865
查看次数

如何创建其主要功能需要引用参数的线程?

我需要在线程中创建对变量的引用。当像下面的代码那样执行操作时,会出现两个错误:

C2672:'std :: invoke':找不到匹配的重载函数

C2893:无法专门化功能模板“ unknown-type std::invoke(_Callable &&,_Types &&...) noexcept(<expr>)

如何正确编码?

#include <thread>

void foo(double a, double& b)
{
  b = a;
}

int main()
{
  double a = 0.0, b = 0.0;

  std::thread f(foo, a, b);

  f.join();
}
Run Code Online (Sandbox Code Playgroud)

c++ windows multithreading reference

3
推荐指数
1
解决办法
56
查看次数

线程池如何能够重用线程?

我们当前的课程作业指定我们应该使用“对象池管理器”设计模式为线程池创建一个管理器,该模式会生成一定数量的线程。这些线程的所有权将转移给客户端,并在客户端使用完毕后返回到池中。如果池中不存在线程,则客户端必须等待。

我的困惑来自于这样一个事实:线程被认为是不可重用的,这违背了池化它们的目的。我对作业的理解是否错误?

java multithreading

3
推荐指数
1
解决办法
520
查看次数