*/
void SIMIX_context_mod_init(void)
{
+#if defined(CONTEXT_THREADS) && !defined(HAVE_THREAD_LOCAL_STORAGE)
+ /* the __thread storage class is not available on this platform:
+ * use getspecific/setspecific instead to store the current context in each thread */
+ xbt_os_thread_key_create(&smx_current_context_key);
+#endif
if (!simix_global->context_factory) {
/* select the context factory to use to create the contexts */
if (smx_factory_initializer_to_use) {
}
}
}
-
-#if defined(CONTEXT_THREADS) && !defined(HAVE_THREAD_LOCAL_STORAGE)
- /* the __thread storage class is not available on this platform:
- * use getspecific/setspecific instead to store the current context in each thread */
- xbt_os_thread_key_create(&smx_current_context_key);
-#endif
}
/**
- * This function is call by SIMIX_clean() to finalize the context module.
+ * This function is called by SIMIX_clean() to finalize the context module.
*/
void SIMIX_context_mod_exit(void)
{
* \param nb_threads the number of threads to use
*/
XBT_INLINE void SIMIX_context_set_nthreads(int nb_threads) {
-
if (nb_threads<=0) {
nb_threads = xbt_os_get_numcores();
XBT_INFO("Auto-setting contexts/nthreads to %d",nb_threads);
THROWF(arg_error, 0, "The thread factory cannot be run in parallel");
#endif
}
-
smx_parallel_contexts = nb_threads;
}