文章标签 ‘源码分析’

今天看到railschina论坛上一篇贴子在讨论在Ruby中,puts str是不是等于print str + “\n”。因为一位同学做了实验,在irb中,在多线程环境下使用puts似乎有问题,有的时候字符串和换行的顺序会乱,而用print就没有问题,所以得出结论,认为puts是不等于print + “\n”的。又有人提出质疑,因为做了另外的实验,在非irb环境下,puts和print都没有问题,所以认为多线程问题只是主观臆测,有可能是irb的问题。甚至还有人写信给Dave,结果Dave也没有给出明确的答复~ 正好手头上有Ruby的源代码,所以翻出来看了一下,在io.c中,明确的写明了Ruby中ios.puts方法的实现: VALUE rb_io_puts(argc, argv, out) int argc; VALUE *argv; VALUE out; { int i; VALUE line; /* if no argument given, print newline. */ if (argc == 0) { rb_io_write(out, rb_default_rs); return Qnil; } for (i=0; i<argc; i++) { if (NIL_P(argv[i])) { line = rb_str_new2(“nil”); } else { [...]

2007年8月21日22:18 | 没有评论
分类: Ruby