通过事件方式写会导致线程安全问题，直接通过channel写，