自定义内存分配池
This commit is contained in:
@@ -4,13 +4,14 @@
|
||||
#include <QThread>
|
||||
#include <cmath>
|
||||
#include <memory>
|
||||
#include <thread>
|
||||
#include "../Renderive/Axis/Axis.h"
|
||||
#include "../Renderive/Axis/Frequency_Axis.h"
|
||||
#include "../Renderive/architecture/Plot.h"
|
||||
#include "../Renderive/plottable/Spectrum.h"
|
||||
namespace {
|
||||
QVector<double> make_spectrum_data(int size, int frame) {
|
||||
QVector<double> data(size);
|
||||
std::vector<double> make_spectrum_data(int size, int frame) {
|
||||
std::vector<double> data(size);
|
||||
for (int i = 0; i < size; ++i)
|
||||
data[i] = -80.0 + 20.0 * std::sin((double)(i + frame) * 0.03);
|
||||
return data;
|
||||
@@ -65,18 +66,17 @@ void stress_plot_destroy_with_pending_tasks() {
|
||||
process_events(20);
|
||||
}
|
||||
}
|
||||
void stress_reinit_rejected() {
|
||||
renderive::Plot plot_a;
|
||||
renderive::Plot plot_b;
|
||||
plot_a.init();
|
||||
plot_b.init();
|
||||
auto axis_node_a = plot_a.create_renderable_node(plot_a.get_root_renderable(), "Axis_Renderable_A");
|
||||
auto axis_node_b = plot_b.create_renderable_node(plot_b.get_root_renderable(), "Axis_Renderable_B");
|
||||
auto axis = renderive::Axis::Builder(axis_node_a, Qt::Horizontal).set_pixel_size(100).set_coord_range({0.0, 1.0}).build();
|
||||
try {
|
||||
axis->init(axis_node_b);
|
||||
void stress_release_renderable_after_plot_destroy() {
|
||||
std::shared_ptr<renderive::Renderable> survivor;
|
||||
{
|
||||
renderive::Plot plot;
|
||||
plot.init();
|
||||
survivor = plot.create_renderable_node(plot.get_root_renderable(), "Survivor");
|
||||
}
|
||||
catch (...) {}
|
||||
std::thread release_thread([owner = std::move(survivor)]() mutable {
|
||||
owner.reset();
|
||||
});
|
||||
release_thread.join();
|
||||
}
|
||||
}
|
||||
int main(int argc, char** argv) {
|
||||
@@ -84,7 +84,7 @@ int main(int argc, char** argv) {
|
||||
renderive::start_render_scheduler();
|
||||
stress_remove_local_cache_renderable();
|
||||
stress_plot_destroy_with_pending_tasks();
|
||||
stress_reinit_rejected();
|
||||
stress_release_renderable_after_plot_destroy();
|
||||
process_events(250);
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user