小编Dav*_*ave的帖子

Qt 信号和槽的效率

我正在浏览 QMainWindow 内部的方法,注意到某些部分(例如 resizeEvent 和 winEvent)没有作为信号实现,而是您必须继承此类才能覆盖它们。

我的问题是,信号和槽的效率如何,是否可以将这些类型的函数实现为其他类可以订阅的信号。例如,在高性能游戏引擎内部。

c++ performance qt4 signals-slots game-engine

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

在悬停时开始和暂停SVG动画

当用户将鼠标悬停在SVG上时,我想在下面的SVG上设置齿轮动画.也就是说,当鼠标进入时,两个齿轮在它们停止的地方开始旋转.当鼠标离开时,齿轮会停在它们所处的任何位置.如果可能的话,我希望动画以易于进/出功能开始和结束.如何使用SVG动画完成此操作?

Codepen

<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="256" height="256" viewBox="0 0 256 256">

    <path d="M249.363 80.921l-6.402-15.451c-1.769-4.267-6.659-6.292-10.927-4.528l-9.032 3.7 c-8.043-12.801-18.893-23.646-31.692-31.689l3.744-9.032c1.768-4.266-0.258-9.162-4.528-10.926l-15.45-6.402 c-4.264-1.764-9.16 0.261-10.923 4.523l-3.744 9.032c-14.458-3.293-29.542-3.478-44.817 0l-3.74-9.028 c-1.768-4.267-6.659-6.292-10.926-4.528l-15.451 6.402c-4.267 1.768-6.296 6.656-4.528 10.926l3.744 9 C71.893 41 61 51.9 53 64.687l-9.032-3.744c-4.263-1.764-9.158 0.261-10.927 4.528l-6.398 15.5 c-1.768 4.3 0.3 9.2 4.5 10.926l9.028 3.74c-3.349 14.666-3.435 29.8 0 44.816l-9.028 3.7 c-4.271 1.768-6.296 6.664-4.528 10.926l6.398 15.451c1.772 4.3 6.7 6.3 10.9 4.524l9.032-3.741 c8.044 12.8 18.9 23.6 31.7 31.693l-3.74 9.032c-1.768 4.3 0.3 9.2 4.5 10.927l15.451 6.4 c4.267 1.8 9.158-0.257 10.926-4.528l3.74-9.028c14.613 3.3 29.7 3.4 44.8 0l3.739 …
Run Code Online (Sandbox Code Playgroud)

svg svg-animate

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

隐藏外部名称空间中的函数

我正在构建一个游戏并拥有几组命名空间.一个叫做"引擎",另一个叫做"游戏".我只希望Engine能够看到几个函数和变量.我需要做什么来隐藏Game命名空间中的某些函数(而不是整个类).

c# encapsulation

2
推荐指数
1
解决办法
779
查看次数

每隔n秒唤醒线程

我正在使用C#编写WPF应用程序,我需要一些线程帮助.我有三个类,每个类需要在他们自己的线程中每n秒运行一个任务.这是我用Qt4做的方式:

class myThread : public QThread
{
    void run (void)
    {
        while (true)
        {
            mMutex.lock();
            mWaitCondition.wait (&mMutex);

            // Some task

            mMutex.unlock();
        }
    }

    void wait (int timeout)
    {
        // For shutdown purposes
        if (mMutex.tryLock (timeout))
            mMutex.unlock();
    }

    void wake (void)
    {
        mWaitCondition.wakeAll();
    }
}

// Some other class has a timer which ticks
// every n seconds calling the wake function
// of the myThread class.
Run Code Online (Sandbox Code Playgroud)

我从中获得的是受控更新间隔.因此,如果我每秒更新60次,如果代码很慢并且每秒只能运行30次,那么这样做没有问题,但它每秒运行时间不会超过60次.它也不会同时运行多次相同的代码.什么是在C#中实现这个的最简单方法?

.net c# wpf multithreading thread-safety

2
推荐指数
1
解决办法
2472
查看次数

首次索引数组太慢了

我正在使用C#编写应用程序.我运行了一些基准来尝试加速我的应用程序并遇到了问题.我有一个循环,需要以不同的间隔运行多次:

Process[] processes = Process.GetProcesses();
foreach (Process process in processes)
    if (process.MainWindowTitle == "Title")
    {
        // Do Stuff
    }
Run Code Online (Sandbox Code Playgroud)

我意识到问题是,只要我创建数组,访问该数组的特定元素所需的时间比后续访问要长得多.

if (processes[0].MainWindowTitle == "Title") { } // ~0.5 ms
if (processes[0].MainWindowTitle == "Title") { } // ~0.0 ms
if (processes[0].MainWindowTitle == "Title") { } // ~0.0 ms
if (processes[0].MainWindowTitle == "Title") { } // ~0.0 ms
Run Code Online (Sandbox Code Playgroud)

这是一个非常重要的问题.应该花费少于0.1ms的东西需要50ms.为什么会发生这种情况?我能做些什么来加快速度?

.net c# wpf .net-4.0

2
推荐指数
1
解决办法
128
查看次数

从任务栏取消单独进程的分组

我正在使用 C++ 和 Qt 编写一个应用程序,用户可以在同一台计算机上运行该应用程序的多个实例。应用程序的每个实例都有两到三个与之关联的窗口。目前,应用程序的所有实例及其窗口都在任务栏中分组在一起(上图)。我希望每个进程在任务栏中都有自己的组(下图)。如何才能实现这一目标?

在此输入图像描述

c++ windows qt taskbar

2
推荐指数
1
解决办法
871
查看次数

让线程等待

我有点问题.我有一个java应用程序,当它启动时,它需要制作大约六个,也就是七个线程,等待某种事件发生(即用户按下一个按钮).我如何制作这些线程的一个例子如下.问题是,我打开我的任务管理器只看到我的四个cpu核心都是100%(从大约20开始),一旦我关闭我的应用程序,一切都恢复正常.我仍然是多线程的新手,我知道我在这里犯了某种并发罪,但我很感激有关如何纠正这种情况的任何见解.

new Thread (new Runnable() { public void run()
{
    while (true)
        if (doSomeFunction)
        {
            myFunction();
            doSomeFunction = false;
        }
} } ).start();

// Somewhere else in the code
doSomeFunction = true;
Run Code Online (Sandbox Code Playgroud)

我想也许等等,通知将是正确的approch这样做?

编辑:只是为了澄清,这与为摆动组件供电无关.相反,这会根据脚本执行事件,我不希望某些脚本函数被阻止,而是在后台完成任务时立即返回.

java concurrency multithreading

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

检测模拟键盘/鼠标输入

有没有办法检测 Windows 上的模拟键盘/鼠标输入。例如,用户在他的键盘上输入一些东西,而不是 sendKeys/PostMessage/屏幕键盘。有没有办法区分这两者?

编辑:也许一个例子会有所帮助。我正在制作游戏并希望区分真实输入与 WinAPI 合成键盘/鼠标消息。

c++ windows simulation winapi input

1
推荐指数
2
解决办法
4374
查看次数

在命名空间声明后声明使用语句

我正在编写一个实用程序库,它由几个"包"组成.每个包中的类都包含在各种名称空间中.我已经知道如何通过在类声明结束时自动声明使用语句来简化情况(见下文),这将避免程序员在cpp文件中执行此操作.

namespace Utility
{
    class String
    {
        // Class Implementation
    };
}

using Utility::String;
Run Code Online (Sandbox Code Playgroud)

我的理解是,如果用户包含头String.h并且String在Utility中,那么程序员将希望使用String.显然,如果有外部类链包括一堆污染命名空间的文件,那么这可能会很糟糕,所以我想到如何将它变成#define.

namespace Utility
{
    class String
    {
        // Class Implementation
    };
}

#ifdef AUTO_DECLARE_NAMESPACE
    using Utility::String;
#endif
Run Code Online (Sandbox Code Playgroud)

这样,想要这种扩展功能的程序员可以获得它.

这是一个好主意还是有什么我忽略的?

c++ api api-design namespaces using-declaration

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

将基本数据类型封装到类中

在不讨论它是否是一个好主意的情况下,如果要将内置C++数据类型封装到它们自己的类中,那么将面临什么类型的缺点(性能或其他方面).例如,类似于Java和C#,int数据类型将拥有自己的类Int,使用内联运算符重载它.与Single,Double,Long等相同

c++ compiler-construction optimization performance

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

新功能返回新功能

我对JavaScript中的new关键字感到困惑.以下面的例子为例

function A (value) {
    this.a = value;
}

function B (value) {
    return new A (value);
}

console.log (    B (0)); // { a: 0 }
console.log (new B (0)); // { a: 0 }
Run Code Online (Sandbox Code Playgroud)

我希望能够创建一个新的"A"实例,而不必使用"new".为此,我有"B()",然而,当我调用"new B()"时,它似乎与"B()"做同样的事情,好像"new"被忽略了.在这两种情况下,instanceof等于"A".到底发生了什么?

javascript oop factory instance node.js

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