mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
cgen: parallelize (#10844)
This commit is contained in:
@@ -623,8 +623,8 @@ pub fn channel_select(mut channels []&Channel, dir []Direction, mut objrefs []vo
|
||||
}
|
||||
subscr[i].prev = unsafe { &ch.write_subscriber }
|
||||
unsafe {
|
||||
subscr[i].nxt = C.atomic_exchange_ptr(&voidptr(&ch.write_subscriber),
|
||||
&subscr[i])
|
||||
subscr[i].nxt = &Subscription(C.atomic_exchange_ptr(&voidptr(&ch.write_subscriber),
|
||||
&subscr[i]))
|
||||
}
|
||||
if voidptr(subscr[i].nxt) != voidptr(0) {
|
||||
subscr[i].nxt.prev = unsafe { &subscr[i].nxt }
|
||||
@@ -637,7 +637,8 @@ pub fn channel_select(mut channels []&Channel, dir []Direction, mut objrefs []vo
|
||||
}
|
||||
subscr[i].prev = unsafe { &ch.read_subscriber }
|
||||
unsafe {
|
||||
subscr[i].nxt = C.atomic_exchange_ptr(&voidptr(&ch.read_subscriber), &subscr[i])
|
||||
subscr[i].nxt = &Subscription(C.atomic_exchange_ptr(&voidptr(&ch.read_subscriber),
|
||||
&subscr[i]))
|
||||
}
|
||||
if voidptr(subscr[i].nxt) != voidptr(0) {
|
||||
subscr[i].nxt.prev = unsafe { &subscr[i].nxt }
|
||||
|
||||
@@ -32,6 +32,18 @@ fn C.sem_trywait(voidptr) int
|
||||
fn C.sem_timedwait(voidptr, voidptr) int
|
||||
fn C.sem_destroy(voidptr) int
|
||||
|
||||
[typedef]
|
||||
struct C.pthread_mutex_t {}
|
||||
|
||||
[typedef]
|
||||
struct C.pthread_rwlock_t {}
|
||||
|
||||
[typedef]
|
||||
struct C.pthread_rwlockattr_t {}
|
||||
|
||||
[typedef]
|
||||
struct C.sem_t {}
|
||||
|
||||
// [init_with=new_mutex] // TODO: implement support for this struct attribute, and disallow Mutex{} from outside the sync.new_mutex() function.
|
||||
[heap]
|
||||
pub struct Mutex {
|
||||
|
||||
Reference in New Issue
Block a user