小编cro*_*alk的帖子

所有系统调用都是非实时安全的吗?

我听说在Linux中执行系统调用(RT_PREEMPT内核)从来都不是实时安全的.

这看起来过于严格 - 如果没有系统调用,你的进程怎么能做任何事情(除非它必须完全通过DMA完成)?

这是真的,还是一些系统调用(如clock_gettime)实时安全?

linux real-time system-calls

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

C++ -- 我可以使用没有在头文件中实现的模板函数吗?

可能的重复:
将 C++ 模板函数定义存储在 .CPP 文件中
为什么模板只能在头文件中实现?
为什么模板类的实现和声明要在同一个头文件中?

我有三个文件。在 base.h 中,我有一个类,它有一个使用模板的成员:

class Base {
    protected:
        template <class T>
            void doStuff(T a, int b);
};
Run Code Online (Sandbox Code Playgroud)

在 base.cpp 中,我实现了 Base::doStuff():

#include "base.h"

template <class T>
void Base::doStuff(T a, int b) {
    a = b;
}
Run Code Online (Sandbox Code Playgroud)

然后我尝试在我的项目的另一个类中使用它:

#include "base.h"

void Derived::doOtherStuff() {
    int c;
    doStuff(3, c);
}
Run Code Online (Sandbox Code Playgroud)

但是我收到一个链接错误,指出它找不到“doStuff(int, int)”

从我所看到的,如果不将此函数的实现移动到头文件中,这在 C++03 中是不可能的。有没有干净的方法来做到这一点?(我可以使用 C++11x 功能)。

c++ templates

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

如何在Rust中进行实时编程?

我正在将Rust视为硬实时编程中C/C++的替代品.我发现了两个可能的问题:

1)如何避免调用Rust的GC?我已经看到了一些建议,我可以通过简单地避免托管指针和非实时安全库(例如Rust的标准库)来实现这一点 - 这是否足以保证我的实时任务永远不会调用GC?

2)如何将实时任务映射到OS线程?我知道Rust的标准库实现了N:M并发模型,但实时任务必须直接与一个OS线程对应.有没有办法产生这种类型的线程?

real-time rust

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

在应用程序中设置Java的GC选项

可以从Java应用程序内部设置Java GC选项,例如MaxGCPauseMillis(用于G1垃圾收集器),还是必须在用于启动应用程序的命令行上设置它们?

即我可以在代码中执行以下任何部分:

java -XX:+UseG1GC -XX:MaxGCPauseMillis=10 -XX:GCPauseIntervalMillis=100 -jar app.jar
Run Code Online (Sandbox Code Playgroud)

java garbage-collection

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