蜗窝科技

用一个简介的例子:区分阻塞,非阻塞,同步,异步

蜗窝讨论区存档 · Linux kernel技术问答 · 楼主 maze · 2016-12-21 · 5 帖

本文是原「蜗窝讨论区」的历史存档(2016-12-21),来自版块「Linux kernel技术问答」,共 5 帖。讨论区已停止服务,此处仅供查阅。

maze · 2016-12-21 16:27

如题~!

wowo · 2016-12-21 16:54

maze 写道: 如题~!

以从串口读取数据为例(假如你能看懂的话,哈哈~~)。


[== Undefined ==]
1.阻塞方式
    read(10 bytes)
        wait...
        wait...
                                <---RX(5 bytes)
        wait...
                                <---RX(5 bytes)
    return(10 bytes)
2.非方式阻塞
    read(10 bytes)
    return(0 bytes)
    ...
                                <---RX(5 bytes)
    read(10 bytes)
    return(5 bytes)
    ...
                                <---RX(5 bytes)
    read(5 bytes)
    return(5 bytes)
3. 同步方式
    上面的阻塞或者非阻塞,都属于同步方式。
4. 异步方式
    read(10 bytes, callback)
    return(0)
...
                            &lt;---RX(5 bytes)
...
                            &lt;---RX(5 bytes)
callback(10bytes)

maze · 2016-12-21 16:57

wowo 写道:

maze 写道: 如题~!

以从串口读取数据为例(假如你能看懂的话,哈哈~~)。


[== Undefined ==]
1.方式阻塞
    read(10 bytes)
        wait...
        wait...
                                <---RX(5 bytes)
        wait...
                                <---RX(5 bytes)
    return(10 bytes)
2.非方式阻塞
    read(10 bytes)
    return(0 bytes)
    ...
                                <---RX(5 bytes)
    read(10 bytes)
    return(5 bytes)
    ...
                                <---RX(5 bytes)
    read(5 bytes)
    return(5 bytes)
3. 同步方式
    上面的阻塞或者非阻塞,都属于同步方式。
4. 异步方式
    read(10 bytes, callback)
    return(0)
...
                            &lt;---RX(5 bytes)
...
                            &lt;---RX(5 bytes)
callback(10bytes)

感谢wowo的回复,正确,但是感觉缺乏一些必要的说明,也把进程这个概念给淡化了。。

wowo · 2016-12-21 16:59

maze 写道:

wowo 写道:

maze 写道: 如题~!

以从串口读取数据为例(假如你能看懂的话,哈哈~~)。


[== Undefined ==]
1.方式阻塞
    read(10 bytes)
        wait...
        wait...
                                <---RX(5 bytes)
        wait...
                                <---RX(5 bytes)
    return(10 bytes)
2.非方式阻塞
    read(10 bytes)
    return(0 bytes)
    ...
                                <---RX(5 bytes)
    read(10 bytes)
    return(5 bytes)
    ...
                                <---RX(5 bytes)
    read(5 bytes)
    return(5 bytes)
3. 同步方式
    上面的阻塞或者非阻塞,都属于同步方式。
4. 异步方式
    read(10 bytes, callback)
    return(0)
...
                            &lt;---RX(5 bytes)
...
                            &lt;---RX(5 bytes)
callback(10bytes)

感谢wowo的回复,正确,但是感觉缺乏一些必要的说明,也把进程这个概念给淡化了。。

我是懒懒写啊,这个东东,没什么值得讨论的哈,哈哈 :cool:

maze · 2016-12-22 10:45

wowo 写道:

maze 写道:

wowo 写道:

maze 写道: 如题~!

以从串口读取数据为例(假如你能看懂的话,哈哈~~)。


[== Undefined ==]
1.方式阻塞
    read(10 bytes)
        wait...
        wait...
                                <---RX(5 bytes)
        wait...
                                <---RX(5 bytes)
    return(10 bytes)
2.非方式阻塞
    read(10 bytes)
    return(0 bytes)
    ...
                                <---RX(5 bytes)
    read(10 bytes)
    return(5 bytes)
    ...
                                <---RX(5 bytes)
    read(5 bytes)
    return(5 bytes)
3. 同步方式
    上面的阻塞或者非阻塞,都属于同步方式。
4. 异步方式
    read(10 bytes, callback)
    return(0)
...
                            &lt;---RX(5 bytes)
...
                            &lt;---RX(5 bytes)
callback(10bytes)

感谢wowo的回复,正确,但是感觉缺乏一些必要的说明,也把进程这个概念给淡化了。。

我是懒懒写啊,这个东东,没什么值得讨论的哈,哈哈 :cool:

有些时候思路不清啊,和别人讨论容易闹笑话吧