[#7476] Net::HTTP Bug in Ruby 1.8.4? — James Edward Gray II <james@...>
Can a Net::HTTP guru comment on this message:
[#7485] Bugzilla for ruby? — Hadmut Danisch <hadmut@...>
Hi,
[#7493] how to introduce reference objects into ruby — "Geert Fannes" <Geert.Fannes@...>
Hello,
[#7497] Re: how to introduce reference objects into ruby — "Geert Fannes" <Geert.Fannes@...>
Hello,
[#7500] Re: how to introduce reference objects into ruby — "Geert Fannes" <Geert.Fannes@...>
The problem with the code you sent is that you have to go through ALL
The columns store the actual values (doubles), and the rows store pointers to the corresponding doubles. This way, I can update a double directly via the columns, via the rows after dereferencing the pointers.
[#7518] Proposal: String#notempty? — Bertram Scharpf <lists@...>
Hi,
[#7524] Sefe level: bug or feature? — "Kirill A. Shutemov" <k.shutemov@...>
Why cannot do eval with $SAFE=3 and can with $SAFE=4? Is it bug or
Hi,
On Mon, 13 Mar 2006, Yukihiro Matsumoto wrote:
[#7529] Re: Proposal: String#notempty? — "Berger, Daniel" <Daniel.Berger@...>
> -----Original Message-----
[#7546] Re: how to introduce reference objects into ruby — "Geert Fannes" <Geert.Fannes@...>
In Ruby, there's the []= and [] operators which you can define together.
[#7553] "not" operator used in expression that is a method parameter can generate syntax error — noreply@...
Bugs item #3843, was opened at 2006-03-15 22:09
Hi,
Nobu, you are not answering to the question.... You have to unveil why
Hi,
Hello,
Zev Blut wrote:
On 3/16/06, Joel VanderWerf <vjoel@path.berkeley.edu> wrote:
On 3/16/06, Zev Blut <rubyzbibd@ubit.com> wrote:
Hello,
Yukihiro Matsumoto wrote:
On 3/16/06, mathew <meta@pobox.com> wrote:
Brian Mitchell wrote:
On 3/16/06, mathew <meta@pobox.com> wrote:
Dear all
What you've described is the basic predence difference between
Evan Phoenix wrote:
[#7600] ruby_script ? — "Nicolas Despr鑚" <nicolas.despres@...>
Hi list,
>>>>> "N" == Nicolas Despr=E8s?= <ISO-8859-1> writes:
On 3/25/06, ts <decoux@moulon.inra.fr> wrote:
>>>>> "N" == Nicolas Despr=E8s?= <ISO-8859-1> writes:
[#7601] to_str, to_s and StringValue — "Gerardo Santana Gez Garrido" <gerardo.santana@...>
If I understand correctly, StringValue is a way for writing duck-type
[#7614] PATCH: A subclassable Pathname — "Evan Phoenix" <evanwebb@...>
A simply change (changing all references of "Pathname.new" to
In article <92f5f81d0603262350k796fe48fp2224b9f2108ac507@mail.gmail.com>,
Quite right on the .glob and .getwd. I guess the tests don't test hit
In article <92f5f81d0603270903g2fb02244i6a395be708dfffa3@mail.gmail.com>,
In article <87fyl3x0wd.fsf@m17n.org>,
Hm, well, thats because of the shortcut behavior in Pathname#+ which
In article <92f5f81d0603271717r1ce51d30p6c28e363dc32a09b@mail.gmail.com>,
[PATCH] async thread wakeup
I emailed ruby-core about this a while back, but got no response, so here is a patch to make my question more concrete. This patch adds a hook into the thread scheduler that extensions can use to wake up a thread asynchronously. It is a function you can safely call from any thread. It will mark the thread runnable, so that the thread scheduler will consider running it the next time around. It is similar in concept to the catch_timer() callback that sets rb_thread_pending: set a flag asynchronously that is then checked from the Ruby thread. The function returns false (and does nothing) if the thread passed to it is not valid. I refactored rb_thread_check slightly to support this. Please let me know if this is suitable for inclusion in the main Ruby distribution. Thanks, Josh
Attachments (1)
? .eval.c.swp
? .intern.h.swp
? .ruby.h.swp
? async_thread_wakeup.patch
? ext/ripper/mkmf.log
Index: eval.c
===================================================================
RCS file: /src/ruby/eval.c,v
retrieving revision 1.890
diff -d -u -r1.890 eval.c
--- eval.c 23 Feb 2006 04:24:39 -0000 1.890
+++ eval.c 19 Mar 2006 21:25:53 -0000
@@ -10112,15 +10112,25 @@
}
static rb_thread_t
-rb_thread_check(VALUE data)
+rb_thread_get(VALUE data)
{
if (TYPE(data) != T_DATA || RDATA(data)->dmark != (RUBY_DATA_FUNC)thread_mark) {
- rb_raise(rb_eTypeError, "wrong argument type %s (expected Thread)",
- rb_obj_classname(data));
+ return NULL;
}
return (rb_thread_t)RDATA(data)->data;
}
+static rb_thread_t
+rb_thread_check(VALUE data)
+{
+ rb_thread_t th = rb_thread_get(data);
+
+ if (th) return th;
+
+ rb_raise(rb_eTypeError, "wrong argument type %s (expected Thread)",
+ rb_obj_classname(data));
+}
+
static VALUE rb_thread_raise(int, VALUE*, rb_thread_t);
static VALUE th_raise_exception;
@@ -10769,6 +10779,18 @@
rb_thread_restore_context(next, RESTORE_NORMAL);
}
+/*
+ * Can be called asynchronously (in a different thread from the
+ * Ruby interpreter).
+ */
+int
+rb_thread_async_wakeup(VALUE thread)
+{
+ rb_thread_t th = rb_thread_get(thread);
+ if (th) th->status = THREAD_RUNNABLE;
+ return th != NULL;
+}
+
void
rb_thread_wait_fd(int fd)
{
Index: intern.h
===================================================================
RCS file: /src/ruby/intern.h,v
retrieving revision 1.193
diff -d -u -r1.193 intern.h
--- intern.h 17 Feb 2006 08:40:51 -0000 1.193
+++ intern.h 19 Mar 2006 21:25:53 -0000
@@ -275,6 +275,7 @@
void rb_thread_signal_exit(void);
int rb_thread_select(int, fd_set *, fd_set *, fd_set *, struct timeval *);
void rb_thread_wait_for(struct timeval);
+int rb_thread_async_wakeup(VALUE thread);
VALUE rb_thread_current(void);
VALUE rb_thread_main(void);
VALUE rb_thread_local_aref(VALUE, ID);