Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
publicize the existance of Java continuations as an answer to Java scalability
authorMartin Quinson <martin.quinson@loria.fr>
Mon, 20 Aug 2012 13:31:05 +0000 (15:31 +0200)
committerMartin Quinson <martin.quinson@loria.fr>
Mon, 20 Aug 2012 13:31:05 +0000 (15:31 +0200)
src/smx_context_java.c

index 537a484..9eed4af 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,12 @@ 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("Impossible to create context #%d. You may want to switch to Java continuations to increase your limits (error: %s)",
+                       thread_amount);
+    }
   }
   else {
        context->thread = NULL;