2016-07-29 8 views
0

つのホストがあります:SimGridでどのようにMSG_host_set_property_value()を適切に使用しますか?

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

つだけのプロセスは、このホストにデプロイします。

<process host="Worker1" function="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に変更すると、シミュレーションは正常に動作します。しかし、私は生産性に影響を与える恐れがあります。

答えて

1

例を見る/ MSG /プラットフォームの特性/プラットフォーム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)。

関連する問題