Git Product home page Git Product logo

Comments (5)

antoyo avatar antoyo commented on August 16, 2024

It's been a while since I wrote this, but I believe the Channel type cannot be sent to another thread. Have you tried to do so?

from relm.

marmistrz avatar marmistrz commented on August 16, 2024

glib::Source implements Send and so does relm::Channel. I checked it by adding a drop(channel) to the end of the spawned closure in multithread.rs and the example works perfectly well.

from relm.

antoyo avatar antoyo commented on August 16, 2024

Wouldn't that create a race condition where it could be possible that the channel is dropped before the other thread received the message?

The Channel is like a Receiver, so it is usual to have 2 halves when creating a channel. It's just that the one in relm doesn't have a recv() method and looks unused as a result.

from relm.

marmistrz avatar marmistrz commented on August 16, 2024

Perhaps, I think about the following sequence:

  1. Sender sends
  2. Sender is dropped
  3. Channel is dropped
  4. Receiver tries to receive.

Would it make sense to possibly allow storing the channel within the relm context, given that in most usecases this will be the lifetime of the channel and that the channel is tied to the relm stream? fwiw, I think about Box::leaking the channel in my case so that I don't have to store a _channel per channel

from relm.

antoyo avatar antoyo commented on August 16, 2024

Would it make sense to possibly allow storing the channel within the relm context, given that in most usecases this will be the lifetime of the channel and that the channel is tied to the relm stream?

I'm not sure I understand what you suggest. Could you please provide a code example and what it would generate?

from relm.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.