Mobile computing between Goroutine

Source: Internet
Author: User
This is a created article in which the information may have evolved or changed.

How do I move a calculation between goroutine? That is, how to Goroutine G1 in the calculation "move" to Goroutine G2 to execute?

The scenario is this, there are some goroutine shared data, only one goroutine have the Write permission of the data, the other goroutine only Read permission (if more than one goroutine at the same time write permission on the data must be locked). At this point, a goroutine G1 holds a reference to data D, but does not have the write permission of the data, and the other Goroutine G2 has the Write permission of the data, hoping that the calculation of D, from G1 "move" to G2 to execute.

The basic idea is to encapsulate the function with the data, wrap it in the inner side of the closure, and then pass it through the channel, passing from one goroutine to another goroutine to execute.

On the code:

// shared datavar data Dfunc computation(d *D) {}go G1() {    // d is an reference to shared data D    d := &data    // a closure send to channel    ch <- func() {        computation(d)    }}go G2() {    // get the closure from channel    f := <- ch    // execute the computation    f()}
Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.