Queue as embedded class
Queue class in lib/thread.rb (ext/thread/thread.c from Ruby 2.1) is easy and safe way to communicate between threads.
How about to include Queue class as embedded class to elaborate using Queue?
This proposal is not include ConditionVariable and SizedQueue.
Updated by ko1 (Koichi Sasada) over 5 years ago
Now, thread.rb is required from rubygems.
$ ./ruby -ve 'p Queue' ruby 2.2.0dev (2014-11-20 trunk 48507) [x86_64-linux] Thread::Queue
$ ./ruby --disable-gems -ve 'p Queue' ruby 2.2.0dev (2014-11-20 trunk 48507) [x86_64-linux] -e:1:in `<main>': uninitialized constant Queue (NameError)
What should we do?
Updated by ko1 (Koichi Sasada) almost 5 years ago
- Status changed from Assigned to Closed
Applied in changeset r51660.
- ext/thread/thread.c: move definitions of Queue, SizedQueue and ConditionalVariables to thread_tools.c. In other wowrds, such classes are built-in. [Feature #8919] At first, I planned to embed only a Queue class. However, rubygems requires 'thread.rb' (rubygems are required at first, when launch MRI without --disable-gems). So most of people require 'thread.rb' as an embedded library. Now, ext/thread/thread.c is empty, only for a dummy for compatibility.
- thread.c: move a definition of Mutex class to thread_tools.c. And define Mutex class under Thread (so now Mutex is Thread::Mutex). Because other thread related classes are also defined under Thread. We remain ::Mutex as Thread::Mutex. Only an inspect result is changed.
- common.mk: add dependency from thread.o to thraed_tools.c.