From: Ricardo Panaggio Date: 2010-07-17T06:55:35+09:00 Subject: [ruby-core:31320] Re: [rubysoc] Queue C-extension patch to come --00504501677132c799048b88476c Content-Type: text/plain; charset=ISO-8859-1 Sorry for leaving this thread for so long. I've tried to finish the patch before sending anything back here. > I would suggest you provide a working prototype as gem, so opt-in can > be done and performance comparison can be made. It's really difficult doing this as a gem, using the thread.c code as it is, because there are a lot of statics from thread.c to be used. > Do you have your intermediate work somewhere? There's a branch on my ruby fork on github: http://github.com/panaggio/ruby/tree/queue > Send what you've done so far. Maybe we can come up with a way to break > up the patch. I've attached my patch. Ricardo Panaggio --00504501677132c799048b88476c Content-Type: text/x-diff; charset=US-ASCII; name="queue.patch" Content-Disposition: attachment; filename="queue.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gbpkf2ut0 ZGlmZiAtLWdpdCBhL2xpYi90aHJlYWQucmIgYi9saWIvdGhyZWFkLnJiCmluZGV4IDg4ZjgzNGMu LmQxNTJiZDcgMTAwNjQ0Ci0tLSBhL2xpYi90aHJlYWQucmIKKysrIGIvbGliL3RocmVhZC5yYgpA QCAtMTM3LDcgKzEzNyw3IEBAIGVuZAogIwogIyAgIGNvbnN1bWVyLmpvaW4KICMKLWNsYXNzIFF1 ZXVlCitjbGFzcyBTbG93UXVldWUKICAgIwogICAjIENyZWF0ZXMgYSBuZXcgcXVldWUuCiAgICMK ZGlmZiAtLWdpdCBhL3Rlc3QvdGhyZWFkL3Rlc3RfcXVldWUucmIgYi90ZXN0L3RocmVhZC90ZXN0 X3F1ZXVlLnJiCmluZGV4IDljMTgxOGYuLmRiMjY5ZWUgMTAwNjQ0Ci0tLSBhL3Rlc3QvdGhyZWFk L3Rlc3RfcXVldWUucmIKKysrIGIvdGVzdC90aHJlYWQvdGVzdF9xdWV1ZS5yYgpAQCAtNiw5ICs2 LDExIEBAIGNsYXNzIFRlc3RRdWV1ZSA8IFRlc3Q6OlVuaXQ6OlRlc3RDYXNlCiAgICAgZ3JpbmQo NSwgMTAwMCwgMTUsIFF1ZXVlKQogICBlbmQKIAorPWJlZ2luCiAgIGRlZiB0ZXN0X3NpemVkX3F1 ZXVlCiAgICAgZ3JpbmQoNSwgMTAwMCwgMTUsIFNpemVkUXVldWUsIDEwMDApCiAgIGVuZAorPWVu ZAogCiAgIGRlZiBncmluZChudW1fdGhyZWFkcywgbnVtX29iamVjdHMsIG51bV9pdGVyYXRpb25z LCBrbGFzcywgKmFyZ3MpCiAgICAgZnJvbV93b3JrZXJzID0ga2xhc3MubmV3KCphcmdzKQpkaWZm IC0tZ2l0IGEvdGhyZWFkLmMgYi90aHJlYWQuYwppbmRleCBiZTU4MGFjLi4xMTBiZjYzIDEwMDY0 NAotLS0gYS90aHJlYWQuYworKysgYi90aHJlYWQuYwpAQCAtNTksNiArNTksNyBAQAogCiBWQUxV RSByYl9jTXV0ZXg7CiBWQUxVRSByYl9jQmFycmllcjsKK1ZBTFVFIHJiX2NRdWV1ZTsKIAogc3Rh dGljIHZvaWQgc2xlZXBfdGltZXZhbChyYl90aHJlYWRfdCAqdGgsIHN0cnVjdCB0aW1ldmFsIHRp bWUpOwogc3RhdGljIHZvaWQgc2xlZXBfd2FpdF9mb3JfaW50ZXJydXB0KHJiX3RocmVhZF90ICp0 aCwgZG91YmxlIHNsZWVwc2VjKTsKQEAgLTQxMzUsNiArNDEzNiwyODIgQEAgcmJfdGhyZWFkX2Jh Y2t0cmFjZV9tKFZBTFVFIHRodmFsKQogfQogCiAvKgorICogIERvY3VtZW50LWNsYXNzOiBRdWV1 ZQorICoKKyAqICBUaGlzIGNsYXNzIHByb3ZpZGVzIGEgd2F5IHRvIHN5bmNocm9uaXplIGNvbW11 bmljYXRpb24gYmV0d2VlbiB0aHJlYWRzLgorICoKKyAqICBFeGFtcGxlOgorICoKKyAqICAgIHJl cXVpcmUgJ3RocmVhZCcKKyAqICAgIHF1ZXVlID0gUXVldWUubmV3CisgKgorICogIHByb2R1Y2Vy ID0gVGhyZWFkLm5ldyBkbworICogICAgNS50aW1lcyBkbyB8aXwKKyAqICAgICAgc2xlZXAgcmFu ZChpKSAjIHNpbXVsYXRlIGV4cGVuc2UKKyAqICAgICAgcXVldWUgPDwgaQorICogICAgICBwdXRz ICIje2l9IHByb2R1Y2VkIgorICogICAgZW5kCisgKiAgZW5kCisgKgorICogIGNvbnN1bWVyID0g VGhyZWFkLm5ldyBkbworICogICAgNS50aW1lcyBkbyB8aXwKKyAqICAgICAgdmFsdWUgPSBxdWV1 ZS5wb3AKKyAqICAgICAgc2xlZXAgcmFuZChpLzIpICMgc2ltdWxhdGUgZXhwZW5zZQorICogICAg ICBwdXRzICJjb25zdW1lZCAje3ZhbHVlfSIKKyAqICAgIGVuZAorICogIGVuZAorICoKKyAqLwor Cit0eXBlZGVmIHN0cnVjdCBfUXVldWUgeworICAgIFZBTFVFIG11dGV4OworICAgIFZBTFVFIHF1 ZTsKKyAgICBWQUxVRSB3YWl0aW5nOworfSBRdWV1ZTsKKworc3RhdGljIHZvaWQKK3F1ZXVlX21h cmsodm9pZCAqcHRyKQoreworICAgIFF1ZXVlICpxdWV1ZSA9IHB0cjsKKyAgICByYl9nY19tYXJr KHF1ZXVlLT5tdXRleCk7CisgICAgcmJfZ2NfbWFyayhxdWV1ZS0+cXVlKTsKKyAgICByYl9nY19t YXJrKHF1ZXVlLT53YWl0aW5nKTsKK30KKworc3RhdGljIHZvaWQKK3F1ZXVlX2ZyZWUodm9pZCAq cHRyKQoreworICAgIGludCBpPTA7CisgICAgaW50IHNpemU7CisKKyAgICBpZiAocHRyKSB7Cisg ICAgICAgIFF1ZXVlICpxdWV1ZSA9IHB0cjsKKyAgICAgICAgc2l6ZSA9IFJBUlJBWV9MRU4ocXVl dWUtPndhaXRpbmcpOworICAgICAgICBmb3IgKGk9MDsgaTxzaXplOyBpKyspIHsKKyAgICAgICAg ICAgIHJiX3RocmVhZF9raWxsKHJiX2FyeV9lbnRyeShxdWV1ZS0+d2FpdGluZywgaSkpOworICAg ICAgICB9CisgICAgfQorICAgIHJ1YnlfeGZyZWUocHRyKTsKK30KKworc3RhdGljIHNpemVfdAor cXVldWVfbWVtc2l6ZShjb25zdCB2b2lkICpwdHIpCit7CisgICAgcmV0dXJuIHB0ciA/IHNpemVv ZihRdWV1ZSkgOiAwOworfQorCitzdGF0aWMgY29uc3QgcmJfZGF0YV90eXBlX3QgcXVldWVfZGF0 YV90eXBlID0geworICAgICJxdWV1ZSIsCisgICAgcXVldWVfbWFyaywgcXVldWVfZnJlZSwgcXVl dWVfbWVtc2l6ZSwKK307CisKKyNkZWZpbmUgR2V0UXVldWVQdHIob2JqLCB0b2JqKSBcCisgICAg VHlwZWREYXRhX0dldF9TdHJ1Y3Qob2JqLCBRdWV1ZSwgJnF1ZXVlX2RhdGFfdHlwZSwgdG9iaikK KworLyoKKyAqIERvY3VtZW50LW1ldGhvZDogbmV3CisgKiBjYWxsLXNlcTogbmV3CisgKgorICog Q3JlYXRlcyBhIG5ldyBxdWV1ZS4KKyAqCisgKi8KKworc3RhdGljIFZBTFVFCitxdWV1ZV9hbGxv YyhWQUxVRSBrbGFzcykKK3sKKyAgICBWQUxVRSB2b2xhdGlsZSBvYmo7CisgICAgUXVldWUgKnF1 ZXVlOworICAgIG9iaiA9IFR5cGVkRGF0YV9NYWtlX1N0cnVjdChrbGFzcywgUXVldWUsICZxdWV1 ZV9kYXRhX3R5cGUsIHF1ZXVlKTsKKworICAgIHF1ZXVlLT5tdXRleCA9IHJiX211dGV4X25ldygp OworICAgIHF1ZXVlLT5xdWUgPSByYl9hcnlfbmV3KCk7CisgICAgcXVldWUtPndhaXRpbmcgPSBy Yl9hcnlfbmV3KCk7CisKKyAgICByZXR1cm4gb2JqOworfQorCitzdGF0aWMgVkFMVUUgd2FpdF9w dXNoKHZvaWQgKnB0cik7CisKKy8qCisgKiBEb2N1bWVudC1tZXRob2Q6IHB1c2gKKyAqIGNhbGwt c2VxOiBwdXNoKG9iaikKKyAqCisgKiBQdXNoZXMgK29iaisgdG8gdGhlIHF1ZXVlLgorICoKKyAq LworCitzdGF0aWMgVkFMVUUKK3JiX3F1ZXVlX3B1c2goVkFMVUUgc2VsZiwgVkFMVUUgb2JqKQor eworICAgIFF1ZXVlICpxdWV1ZTsKKyAgICBHZXRRdWV1ZVB0cihzZWxmLCBxdWV1ZSk7CisKKyAg ICByYl9tdXRleF9sb2NrKHF1ZXVlLT5tdXRleCk7CisKKyAgICByYl9hcnlfcHVzaChxdWV1ZS0+ cXVlLCBvYmopOworCisgICAgd2FpdF9wdXNoKHF1ZXVlKTsKKworICAgIHJiX211dGV4X3VubG9j ayhxdWV1ZS0+bXV0ZXgpOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKK3N0YXRpYyBWQUxVRQor d2FpdF9wdXNoKHZvaWQgKnB0cikKK3sKKyAgICBWQUxVRSB0aHJlYWQ7CisgICAgUXVldWUgKnF1 ZXVlID0gcHRyOworCisgICAgdGhyZWFkID0gcmJfYXJ5X3NoaWZ0KHF1ZXVlLT53YWl0aW5nKTsK KyAgICBpZiAodGhyZWFkICE9IFFuaWwpCisgICAgICAgcmJfcmVzY3VlKHJiX3RocmVhZF93YWtl dXAsIHRocmVhZCwgd2FpdF9wdXNoLCBwdHIpOworICAgIHJldHVybiBRbmlsOworfQorCisvKgor ICogRG9jdW1lbnQtbWV0aG9kOiBwb3AKKyAqIGNhbGxfc2VxOiBwb3Aobm9uX2Jsb2NrPWZhbHNl KQorICoKKyAqIFJldHJpZXZlcyBkYXRhIGZyb20gdGhlIHF1ZXVlLiAgSWYgdGhlIHF1ZXVlIGlz IGVtcHR5LCB0aGUgY2FsbGluZyB0aHJlYWQgaXMKKyAqIHN1c3BlbmRlZCB1bnRpbCBkYXRhIGlz IHB1c2hlZCBvbnRvIHRoZSBxdWV1ZS4gIElmICtub25fYmxvY2srIGlzIHRydWUsIHRoZQorICog dGhyZWFkIGlzbid0IHN1c3BlbmRlZCwgYW5kIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQuCisgKgor ICovCisKK3N0YXRpYyBWQUxVRQorcmJfcXVldWVfcG9wKGludCBhcmdjLCBWQUxVRSAqYXJndiwg VkFMVUUgc2VsZikKK3sKKyAgICBpbnQgc2hvdWxkX2Jsb2NrOworICAgIFZBTFVFIHBvcGVkLCBj dXJyZW50X3RocmVhZDsKKyAgICBRdWV1ZSAqcXVldWU7CisgICAgR2V0UXVldWVQdHIoc2VsZiwg cXVldWUpOworCisgICAgc3dpdGNoIChhcmdjKSB7CisgICAgICAgIGNhc2UgMDoKKyAgICAgICAg ICAgIHNob3VsZF9ibG9jayA9IDE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAx OgorICAgICAgICAgICAgc2hvdWxkX2Jsb2NrID0gIVJURVNUKGFyZ3ZbMF0pOworICAgICAgICAg ICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByYl9yYWlzZShyYl9lQXJn RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAid3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cyAo JWQgZm9yIDEpIiwgYXJnYyk7CisgICAgfQorCisgICAgcmJfbXV0ZXhfbG9jayhxdWV1ZS0+bXV0 ZXgpOworCisgICAgd2hpbGUoIVJBUlJBWV9MRU4ocXVldWUtPnF1ZSkpIHsKKyAgICAgICAgaWYg KCFzaG91bGRfYmxvY2spIHsKKyAgICAgICAgICAgIHJiX211dGV4X3VubG9jayhxdWV1ZS0+bXV0 ZXgpOworICAgICAgICAgICAgcmJfcmFpc2UocmJfZVRocmVhZEVycm9yLCAicXVldWUgZW1wdHki KTsKKyAgICAgICAgfQorCisgICAgICAgIGN1cnJlbnRfdGhyZWFkID0gcmJfdGhyZWFkX2N1cnJl bnQoKTsKKyAgICAgICAgcmJfYXJ5X3B1c2gocXVldWUtPndhaXRpbmcsIGN1cnJlbnRfdGhyZWFk KTsKKworICAgICAgICByYl9tdXRleF9zbGVlcChxdWV1ZS0+bXV0ZXgsIFFuaWwpOworICAgIH0K KworICAgIHBvcGVkID0gcmJfYXJ5X3NoaWZ0KHF1ZXVlLT5xdWUpOworCisgICAgcmJfbXV0ZXhf dW5sb2NrKHF1ZXVlLT5tdXRleCk7CisKKyAgICByZXR1cm4gcG9wZWQ7Cit9CisKKy8qCisgKiBE b2N1bWVudC1tZXRob2Q6IGVtcHR5PworICogY2FsbC1zZXE6IGVtcHR5PworICoKKyAqIFJldHVy bnMgK3RydWUrIGlmIHRoZSBxdWV1ZSBpcyBlbXB0eS4KKyAqCisgKi8KKworc3RhdGljIFZBTFVF CityYl9xdWV1ZV9lbXB0eV9wKFZBTFVFIHNlbGYpCit7CisgICAgVkFMVUUgcmVzdWx0OworICAg IFF1ZXVlICpxdWV1ZTsKKyAgICBHZXRRdWV1ZVB0cihzZWxmLCBxdWV1ZSk7CisKKyAgICByYl9t dXRleF9sb2NrKHF1ZXVlLT5tdXRleCk7CisgICAgcmVzdWx0ID0gUkFSUkFZX0xFTihxdWV1ZS0+ cXVlKSA9PSAwID8gUXRydWUgOiBRZmFsc2U7CisgICAgcmJfbXV0ZXhfdW5sb2NrKHF1ZXVlLT5t dXRleCk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKgorICogRG9jdW1lbnQtbWV0aG9k OiBjbGVhcgorICogY2FsbC1zZXE6IGNsZWFyCisgKgorICogUmVtb3ZlcyBhbGwgb2JqZWN0cyBm cm9tIHRoZSBxdWV1ZS4KKyAqCisgKi8KKworc3RhdGljIFZBTFVFCityYl9xdWV1ZV9jbGVhcihW QUxVRSBzZWxmKQoreworICAgIFF1ZXVlICpxdWV1ZTsKKyAgICBHZXRRdWV1ZVB0cihzZWxmLCBx dWV1ZSk7CisKKyAgICByYl9tdXRleF9sb2NrKHF1ZXVlLT5tdXRleCk7CisgICAgcmJfYXJ5X2Ns ZWFyKHF1ZXVlLT5xdWUpOworICAgIHJiX211dGV4X3VubG9jayhxdWV1ZS0+bXV0ZXgpOworCisg ICAgcmV0dXJuIHNlbGY7Cit9CisKKy8qCisgKiBEb2N1bWVudC1tZXRob2Q6IGxlbmd0aAorICog Y2FsbC1zZXE6IGxlbmd0aAorICoKKyAqIFJldHVybnMgdGhlIGxlbmd0aCBvZiB0aGUgcXVldWUu CisgKgorICovCisKK3N0YXRpYyBWQUxVRQorcmJfcXVldWVfbGVuZ3RoKFZBTFVFIHNlbGYpCit7 CisgICAgbG9uZyBsZW47CisgICAgVkFMVUUgcmVzdWx0OworICAgIFF1ZXVlICpxdWV1ZTsKKyAg ICBHZXRRdWV1ZVB0cihzZWxmLCBxdWV1ZSk7CisKKyAgICByYl9tdXRleF9sb2NrKHF1ZXVlLT5t dXRleCk7CisgICAgbGVuID0gUkFSUkFZX0xFTihxdWV1ZS0+cXVlKTsKKyAgICByZXN1bHQgPSBV TE9ORzJOVU0obGVuKTsKKyAgICByYl9tdXRleF91bmxvY2socXVldWUtPm11dGV4KTsKKworICAg IHJldHVybiByZXN1bHQ7Cit9CisKKy8qCisgKiBEb2N1bWVudC1tZXRob2Q6IG51bV93YWl0aW5n CisgKiBjYWxsLXNlcTogbnVtX3dhaXRpbmcKKyAqCisgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2Yg dGhyZWFkcyB3YWl0aW5nIG9uIHRoZSBxdWV1ZS4KKyAqCisgKi8KKworc3RhdGljIFZBTFVFCity Yl9xdWV1ZV9udW1fd2FpdGluZyhWQUxVRSBzZWxmKQoreworICAgIGxvbmcgbGVuOworICAgIFZB TFVFIHJlc3VsdDsKKyAgICBRdWV1ZSAqcXVldWU7CisgICAgR2V0UXVldWVQdHIoc2VsZiwgcXVl dWUpOworCisgICAgcmJfbXV0ZXhfbG9jayhxdWV1ZS0+bXV0ZXgpOworICAgIGxlbiA9IFJBUlJB WV9MRU4ocXVldWUtPndhaXRpbmcpOworICAgIHJlc3VsdCA9IFVMT05HMk5VTShsZW4pOworICAg IHJiX211dGV4X3VubG9jayhxdWV1ZS0+bXV0ZXgpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30K KworLyoKICAqICBEb2N1bWVudC1jbGFzczogVGhyZWFkRXJyb3IKICAqCiAgKiAgUmFpc2VkIHdo ZW4gYW4gaW52YWxpZCBvcGVyYXRpb24gaXMgYXR0ZW1wdGVkIG9uIGEgdGhyZWFkLgpAQCAtNDIz MCw2ICs0NTA3LDIwIEBAIEluaXRfVGhyZWFkKHZvaWQpCiAgICAgcmJfZGVmaW5lX21ldGhvZChy Yl9jTXV0ZXgsICJ1bmxvY2siLCByYl9tdXRleF91bmxvY2ssIDApOwogICAgIHJiX2RlZmluZV9t ZXRob2QocmJfY011dGV4LCAic2xlZXAiLCBtdXRleF9zbGVlcCwgLTEpOwogCisgICAgcmJfY1F1 ZXVlID0gcmJfZGVmaW5lX2NsYXNzKCJRdWV1ZSIsIHJiX2NPYmplY3QpOworICAgIHJiX2RlZmlu ZV9hbGxvY19mdW5jKHJiX2NRdWV1ZSwgcXVldWVfYWxsb2MpOworICAgIHJiX2RlZmluZV9tZXRo b2QocmJfY1F1ZXVlLCAicHVzaCIsIHJiX3F1ZXVlX3B1c2gsIDEpOworICAgIHJiX2RlZmluZV9t ZXRob2QocmJfY1F1ZXVlLCAicG9wIiwgcmJfcXVldWVfcG9wLCAtMSk7CisgICAgcmJfZGVmaW5l X21ldGhvZChyYl9jUXVldWUsICJlbXB0eT8iLCByYl9xdWV1ZV9lbXB0eV9wLCAwKTsKKyAgICBy Yl9kZWZpbmVfbWV0aG9kKHJiX2NRdWV1ZSwgImNsZWFyIiwgcmJfcXVldWVfY2xlYXIsIDApOwor ICAgIHJiX2RlZmluZV9tZXRob2QocmJfY1F1ZXVlLCAibGVuZ3RoIiwgcmJfcXVldWVfbGVuZ3Ro LCAwKTsKKyAgICByYl9kZWZpbmVfbWV0aG9kKHJiX2NRdWV1ZSwgIm51bV93YWl0aW5nIiwgcmJf cXVldWVfbnVtX3dhaXRpbmcsIDApOworICAgIHJiX2FsaWFzKHJiX2NRdWV1ZSwgcmJfaW50ZXJu KCJlbnEiKSwgcmJfaW50ZXJuKCJwdXNoIikpOworICAgIHJiX2FsaWFzKHJiX2NRdWV1ZSwgcmJf aW50ZXJuKCI8PCIpLCByYl9pbnRlcm4oInB1c2giKSk7CisgICAgcmJfYWxpYXMocmJfY1F1ZXVl LCByYl9pbnRlcm4oImRlcSIpLCByYl9pbnRlcm4oInBvcCIpKTsKKyAgICByYl9hbGlhcyhyYl9j UXVldWUsIHJiX2ludGVybigic2hpZnQiKSwgcmJfaW50ZXJuKCJwb3AiKSk7CisgICAgcmJfYWxp YXMocmJfY1F1ZXVlLCByYl9pbnRlcm4oInNpemUiKSwgcmJfaW50ZXJuKCJsZW5ndGgiKSk7CisK ICAgICByZWN1cnNpdmVfa2V5ID0gcmJfaW50ZXJuKCJfX3JlY3Vyc2l2ZV9rZXlfXyIpOwogICAg IHJiX2VUaHJlYWRFcnJvciA9IHJiX2RlZmluZV9jbGFzcygiVGhyZWFkRXJyb3IiLCByYl9lU3Rh bmRhcmRFcnJvcik7CiAK --00504501677132c799048b88476c--