While I've been used to use threads (heavyweight ones) everywhere in my 
projects, I'm starting to understand and really love the coroutines.
They make lot more sense in many applications where I was used to use 
threads having to care about preemption and to use mutexes to avoid 
inconsistent shared memory states.


Maybe this is not the best way to do it, but I'm sharing data between tasks 
using global consts.
With mutables it guarantees type stability and good type inference inside 
the task functions, however, if I need to share a single Bool state it 
can't be const.
On the other hand, if I make it not const then there will be no type 
stability with regards to that variable and type inference will not work.

I've found out that I was able to create 0-dimensional arrays to box a 
single immutable element (in global scope):
    const flag = Array(Bool)
and then use it inside tasks as:
    flag[] = true
    ......
    if flag[] .....

I tend to read the [] as the C dereference operator.

My question is: is this a reasonable use of this feature?


Reply via email to