-
Notifications
You must be signed in to change notification settings - Fork 74
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
nice job #1
Comments
赞,这个东西放到lisp中的话就可以让lisp起飞了 |
Thanks, interesting work. The 10x slowness on Go side seems to be related to the way how Go handles many many semaphores simultaneously golang/go#38420. Hopefully it could be fixed. The idea to use compiler plugin to statically determine function frame size is interesting. Unfortunately it cannot be generally used due to a) recursion, and b) calling functions by indirection (pointers, interfaces, etc), so some kind of runtime stack guarding will still have to be used to avoid corrupting memory. The channel API misses |
@shiyanhui, thanks for feedback.
Kirill |
Hi @navytux ,
Thanks. |
Hi @shiyanhui,
--- a/select2.c.kirr
+++ b/select2.c
@@ -45,7 +45,8 @@
chan_t(int) *chn2 = chan_new(int)(0);
chan_t(int) *chn3 = chan_new(int)(0);
- async(select1(chn, chn2); select2(chn, chn3));
+ //async(select1(chn, chn2); select2(chn, chn3));
+ async(select2(chn, chn3));
hangup(timer_second);
chan_destroy(chn); Here is what I get as its output:
So it means that write to Kirill |
The channel in libcsp is always buffered which is different with |
I see, thanks for feedback. I can only add that in my view synchronous Go channels are the most useful. They also bring the most of complexity into implementation of send/recv and select. |
I just read a project which is also quite nice. https://github.com/YingshuLu/libcask.
The text was updated successfully, but these errors were encountered: