add setNonblock