# class Fiber::Pool

### Public Class Methods

new(p1 = v1, p2 = v2, p3 = v3) click to toggle source

    static VALUE
    rb_fiber_pool_initialize(int argc, VALUE* argv, VALUE self)
    {
        rb_thread_t *th = GET_THREAD();
        VALUE size = Qnil, count = Qnil, vm_stack_size = Qnil;
        struct fiber_pool * fiber_pool = NULL;

        // Maybe these should be keyword arguments.
        rb_scan_args(argc, argv, "03", &size, &count, &vm_stack_size);

        if (NIL_P(size)) {
            size = SIZET2NUM(th->vm->default_params.fiber_machine_stack_size);
        }

        if (NIL_P(count)) {
            count = INT2NUM(128);
        }

        if (NIL_P(vm_stack_size)) {
            vm_stack_size = SIZET2NUM(th->vm->default_params.fiber_vm_stack_size);
        }

        TypedData_Get_Struct(self, struct fiber_pool, &FiberPoolDataType, fiber_pool);

        fiber_pool_initialize(fiber_pool, NUM2SIZET(size), NUM2SIZET(count), NUM2SIZET(vm_stack_size));

        return self;
    }