如何在 SimGrid 中正确使用 MSG_host_set_property_value()?

How properly use MSG_host_set_property_value() in SimGrid?

有一位主持人:

<host id="Worker1" speed="1Mf" core="101"/>

此主机上只有一个进程部署:

<process host="Worker1" function="worker"/>

worker函数如下:

int worker(int argc, char *argv[])
{
    MSG_host_set_property_value(MSG_host_self(), "activeCore", "0", xbt_free_f);
    MSG_task_execute(MSG_task_create("kot", 10e6, 0, NULL));
    XBT_INFO("I've executed some stuff and changed my value");
    MSG_host_set_property_value(MSG_host_self(), "activeCore", "1", xbt_free_f);
    return 0;
}

当我第二次使用 MSG_host_set_property_value 时,Segmentation fault 加注。

如何避免?

我知道 xbt_free_f 中的原因。如果我将其更改为 NULL 模拟将正常工作。但我担心这会影响生产力。

看着examples/msg/platform-properties/platform-properties.c 你应该写 MSG_host_set_property_value(MSG_host_self(), "activeCore", xbt_strdup("0"), xbt_free_f);

MSG_host_set_property_value(MSG_host_self(), "activeCore", xbt_strdup("1"), xbt_free_f);