ddbc with Vibe-d

Steven Schveighoffer schveiguy at gmail.com
Sun Feb 12 19:38:47 UTC 2023


On 2/12/23 1:01 PM, Steve wrote:
> On Sunday, 12 February 2023 at 15:24:14 UTC, Steven Schveighoffer wrote:
>> Any synchronous calls will just be synchronous. They aren't going to 
>> participate in the async i/o that vibe uses.
>>
>> In other words, when you block on a call to sqlite, it will block 
>> everything else in your web server until that completes.
>>
> 
> 
> Would this be the correct approach to stop it blocking?:
> ```d
> auto result = async(&doSqliteStuff, args...).getResult();
> ```

That might work, depending on args. As documented in the API, if 
anything in args are mutable references, then it is run as a task, and 
the same problem still applies (it will use a fiber, and count on the 
concurrency of vibe's fibers to deal with the asynchronicity).

If it is possible, it will run in a worker thread, and then it can 
execute concurrently.

I believe you can do:

isWeaklyIsolated!(typeof(args))

to see if it will run in another thread.

I admit not having any experience with this function.

-Steve


More information about the Digitalmars-d-learn mailing list