I have seen that in two of the XMOS XC libraries that I use they coin a [[distributable]] task as “synchronous” and they coin a [[combinable]] task as “asynchronous”. That’s for the libraries [lib_i2c] [1] and [lib_spi] [2]. You should read the descriptions in those documents, as they quite successfully describe the difference between distributed and combined tasks. Thus the sentence in both of the descriptions that “The synchronous API provides blocking operation” would be a quite correct use of that word. Even if “blocking” has some negative connotations, but there XMOS would simply mean to say that this is the option that is blocking: “The synchronous API will block your application until the bus operation is complete. In cases where the application cannot afford to wait for this long the asynchronous API can be used“. (See the problem with the blocking word discussed in [3])
It is easy to understand that since a distributable task’s cycles run on the calling task’s logical core, that this is considered synchronous. And that the “messages” (interface calls) that set off another task to do its job on its own is considered asynchronous, even if the interface calls themselves are as synchronous as can be. Here are the code in the two libraries and how the XMOS naming convention seems to be (nothing special for distributable/synchronous but with an _async postfix for the combinable/asynchronous. (But did they forget about i2c_slave_async?)
Code: Select all
[[distributable]] void i2c_master_single_port (..)
[[distributable]] void i2c_master (..)
[[combinable]] void i2c_master_async_comb (..)
[[combinable]] void i2c_slave (..)
[[distributable]] void spi_master (..)
[[combinable]] void spi_master_async (..)
[1] https://www.xmos.com/support/libraries/lib_i2c
[2] https://www.xmos.com/support/libraries/lib_spi
[3] http://www.teigfam.net/oyvind/home/tech ... after-all/
[4] http://www.teigfam.net/oyvind/home/tech ... combinable