Hi guys, I'm working on the issue pointed out by Valter here:
The function in boinc_api.cpp boinc_end_critical_section() used in our code actually checks for boinc_status.quit_request and boinc_status.abort_request, also if options.direct_process_action is true, it should suspend the work, by calling the boic_api.cpp function static int suspend_activities(bool called_from_worker).
What I got by reading the api source is that the option.direct_process_action flag tells boinc to handle the suspend requests. Calling boinc_init() hides a boinc_init_options(..) call with default values defined in boinc_api.h. That flag is true by default.
Also, another interesting flag is options.handles_process_control that enables the 'timer thread' to call handle_process_control_msg(). This function handles the status changes as the boinc_end_critical_section does. As for the previous one, also this flag is true by default.
I have no clue why it doesn't suspend.
Paolo - Application team dev (SSC11)
"If you were plowing a field, which would you rather use: two strong oxen or 1024 chickens?" Seymour Cray