# class Thread

### Public Class Methods

new(*args) click to toggle source

    static VALUE
    bdb_thread_init(int argc, VALUE *argv, VALUE obj)
    {
        VALUE env;

        if ((env = rb_thread_local_aref(rb_thread_current(), bdb_id_current_env)) != Qnil) {
            rb_thread_local_aset(obj, bdb_id_current_env, env);
        }
        if (rb_block_given_p()) {
    #if HAVE_RB_BLOCK_CALL
            return rb_block_call(obj, rb_intern("__bdb_thread_init__"), argc, argv,
                                 rb_yield, obj);
    #else
            VALUE tmp[3];
            tmp[0] = obj;
            tmp[1] = (VALUE)argc;
            tmp[2] = (VALUE)argv;
            return rb_iterate((VALUE (*)(VALUE))bdb_env_iterate, (VALUE)tmp, rb_yield, obj);
    #endif
        }
        return rb_funcall2(obj, rb_intern("__bdb_thread_init__"), argc, argv);
    }