Skip to content

Sample/React. Cannot run the process on a background thread #118

Closed

Description

@st-algernon

I ran the Sample/React project and tried to keep the donut from lagging under stress. Enabling CreateWorker didn't work for me :/ After which I saw your comment: "After some testing I've figured worker interaction layer adds too much complexity and makes debugging harder. It'll make more sense and will probably be more performant to use threading on C# side (#79)."

So I tried using Task on C# side.

        public async Task StartStress()
        {
            cts?.Cancel();
            cts = new CancellationTokenSource();
            await Task.Run(() => Stress(cts.Token));
        }

        private async Task Stress(CancellationToken token)
        {
            while (!token.IsCancellationRequested)
            {
                var time = DateTime.Now;
                await Task.Run(() => ComputePrime(frontend.GetStressPower()), token);
                frontend.NotifyStressComplete((DateTime.Now - time).Milliseconds);
                await Task.Delay(1, token);
            }
        }   

I'm not strong in multithreading, but I thought this should work. Understandably, it didn't work

How can I run the process on a background thread? is it possible now? I will be very grateful for the answer

Activity

  1. elringus commented on Apr 10, 2023

    @elringus
    Owner

    It should be possible once multithreading support is implemented on .NET's wasm runtime (#79) and after we move to the stock runtime (#20).

  2. st-algernon commented on Apr 10, 2023

    @st-algernon
    Author

    thanks a lot 🤗

  3. elringus commented on Apr 10, 2023

    @elringus
    Owner

    Running C# backend on worker thread is actually a desirable scenario for my own project, so I'll most likely add an option to serve interop calls via an async queue, so that they can be processed off the main thread by default. If you'd like to future-proof for that usage scenario, make interop APIs async so that later you can just enable the option w/o breaking anything.

  4. Repository owner locked and limited conversation to collaborators on Apr 10, 2023
  5. converted this issue into a discussion #119 on Apr 10, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions