From: Asterix Gallier Date: 2006-07-28T18:59:36+09:00 Subject: Signaling Ruby from C/C++ Hello, I would like to send a signal from c to ruby. So that ruby knows, that there is some new data in c that can be fetched and extracted. Currently I'm using ruby 1.8.5 on WindowsXP. Are there any possibilities like Callbackfunction, Signals, Interrupthandling ... I've searched but found nothing for my needs. Currently I have the following code. the Problem here is, that i have to wait for the rubyscheduler until the ruby recvThread will be scheduled. Although it could happen, that data will be lost, when there arrives new data while ruby is currently "pop"-ing the array. Have anybody got an idea? Thanks for any tips. Asterix //////////////////////////////////////////////////////// // rubycode require 'RubyDriver' recvThread = Thread.new{ loop do Thread.stop while ( (msg = recvArray.pop) != nil) do puts msg end end } RubyDriver::startReceiver(recvThread, recvArray) //////////////////////////////////////////////////////// // c code VALUE receiverThread, receiverArray; void reciever(void* dummy) { while(1) { msg = recieveMessage(); // a C function wich // returns if there is // new data arrived rb_ary_push(receiverArray, msg); rb_thread_wakeup(receiverThread); } } void startReceiver(VALUE thread, VALUE array) { receiverThread = thread; receiverArray = array; hThread = (HANDLE)_beginthread( reciever, 0, NULL ); } -- Posted via http://www.ruby-forum.com/.