Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Modify teshs timings
[simgrid.git] / src / smx_context_java.c
index 537a484..02f6f7b 100644 (file)
@@ -56,7 +56,10 @@ smx_ctx_java_factory_create_context(xbt_main_func_t code, int argc,
                                     void_pfn_smxprocess_t cleanup_func,
                                     void* data)
 {
+       xbt_ex_t e;
+       static int thread_amount=0;
        smx_ctx_java_t context = xbt_new0(s_smx_ctx_java_t, 1);
+       thread_amount++;
   /* If the user provided a function for the process then use it
      otherwise is the context for maestro */
   if (code) {
@@ -74,7 +77,13 @@ smx_ctx_java_factory_create_context(xbt_main_func_t code, int argc,
     context->super.argv = argv;
     context->super.code = code;
 
-    context->thread = xbt_os_thread_create(NULL,smx_ctx_java_thread_run,context,NULL);
+    TRY {        
+       context->thread = xbt_os_thread_create(NULL,smx_ctx_java_thread_run,context,NULL);
+    } CATCH(e) {
+       RETHROWF("Failed to create context #%d. You may want to switch to Java coroutines to increase your limits (error: %s)."
+                "See the Install section of simgrid-java documentation (in doc/install.html) for more on coroutines.",
+                       thread_amount);
+    }
   }
   else {
        context->thread = NULL;