sc-machine icon indicating copy to clipboard operation
sc-machine copied to clipboard

Зависание при быстром инициировании одинаковых событий и обращению к связанным с ними элементам

Open ShunkevichDV opened this issue 8 years ago • 0 comments

sc_result test_agents_func(const sc_event *event, sc_addr arg) { printf("AGENT\n");

sc_memory_context *ctx = sc_memory_context_new(sc_access_lvl_make_min);

sc_addr begin;
sc_memory_get_arc_begin(ctx, arg, &begin);
sc_iterator3* it = sc_iterator3_f_a_a_new(ctx, begin, sc_type_arc_pos_const_perm, sc_type_const);
while (sc_iterator3_next(it))
{
    printf("ARC: %u|%u\n", sc_iterator3_value(it, 1).seg, sc_iterator3_value(it, 1).offset);
}
sc_iterator3_free(it);

sc_memory_context_free(ctx);
return SC_RESULT_OK;

}

void test_agents() { s_default_ctx = sc_memory_initialize(&params);

sc_memory_context *ctx = sc_memory_context_new(sc_access_lvl_make_min);
sc_addr test_elem1 = sc_memory_node_new(ctx, sc_type_const);
sc_addr test_elem2 = sc_memory_node_new(ctx, sc_type_const);

sc_event* test_agent_event = sc_event_new(ctx, test_elem1, SC_EVENT_ADD_OUTPUT_ARC, 0, test_agents_func, 0);
if (test_agent_event == null_ptr)
    return;

int i = 0;
for (i = 0; i < 10; i++)
{
    sc_memory_arc_new(ctx, sc_type_arc_pos_const_perm, test_elem1, test_elem2);
    //usleep(10000);
}

sc_memory_element_free(ctx, test_elem1);
sc_memory_element_free(ctx, test_elem2);
sc_event_destroy(test_agent_event);

sc_memory_context_free(ctx);

sc_memory_shutdown(SC_FALSE);

}

ShunkevichDV avatar Aug 03 '17 19:08 ShunkevichDV