亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ctask.doc

?? 一個可以立即使用的嵌入式操作系統(tǒng)
?? DOC
?? 第 1 頁 / 共 5 頁
字號:
        used in applications in which malfunction of routines of this
        package would result in damage to property or health of any
        person without *very* extensive testing under all kinds of loads.
        In using CTask, you do so at your own risk. I have tested CTask
        extensively, but with a complex system like CTask, where timing
        might make a big difference, you can't be completely sure that
        all will work as intended.


                          What is required to use CTask?

        To compile CTask, Microsoft C 5.1 or later, or Turbo C 2.0 or
        later are required. Microsoft MASM 5.1 or later, or TASM 1.01 or
        later is required for the assembler parts. Conversion to other
        compilers is possible if they conform to the new ANSI standard.
        Conversion of the assembler parts to other Assembler versions
        will likely be more complicated, since it requires substitution
        of the simplified model directives by explicit segment
        definitions, and adding the DGROUP to offsets referencing data.

        Note that you can not use TASM 1.0 to assemble CTask routines.
        The first version of TASM was not fully compatible with MASM, and
        creates different code in some places, which will lead to fatal
        crashes. TASM version 1.01 does not have this problem, and can
        safely be used.
        
        
        Ctask Manual       - Version 2.2 - 90-10-12 -              Page 7


        The CTask modules have been compiled and tested with Microsoft C
        6.0 without any apparent problems (Optimization level tested was
        /Ox). Since the stability of the MSC 6.0 code generator is
        doubtful, the distributed library was compiled with MSC 5.1.

        CTask will add 14k-25k of code to your program, depending on
        options and installed drivers. The minimum static data used by
        CTask is approximately 4k. Non-DOS versions use less memory.

        Converting CTask for stand-alone operation requires few changes.
        Mainly, the timer interrupt handler (in "tsktim.asm") has to be
        rewritten, and the initialization code (in "tskmain.c") may have
        to be changed. Changes to other modules (naturally except the
        optional hardware drivers) should not be necessary. The "DOS" and
        "IBM" configuration flags in tskconf.h can be disabled to elimi-
        nate most system-dependent features of CTask.

        Another requirement is a good debugger. If you never before wrote
        multitasking applications, you're in for some surprises. The nor-
        mal debugging tools (Symdeb, Codeview) are of only limited use,
        since they use DOS calls for their I/O, and thus may conflict
        with your background tasks. One safety measure is to first thor-
        oughly test your program with preemption disabled, possibly
        inserting some schedule() calls, and only allow task preemption
        if you found most major bugs. I personally recommend Periscope
        for debugging, since it can be made resident and so is always
        available, and because it does not use DOS. Periscope IV is the
        most expensive solution, and the best tool you can imagine, but
        the less costly versions will also help a lot.


                        Do I have to pay for using CTask?

        No. One reason for writing CTask was to provide a free, no
        strings attached, utility, instead of the usual "for personal use
        only" restriction. Writing a multitasking application for
        personal use only doesn't seem too interesting to me. CTask is
        completely free, and there is no restriction on its use. You may
        incorporate all or parts of CTask in your programs, and redistri-
        bute it in source or binary form by any means. I also do not
        restrict the use of CTask in commercial applications. Since
        trying to distribute the unmodified CTask for money will only
        give you a bad name, you may even do that if you find someone
        dumb enough to buy it. Naturally, if you make a bundle from it,
        or simply like CTask, I would not reject a donation. However,
        this is not required, and it will not give you any special
        support.






        
        
        Ctask Manual       - Version 2.2 - 90-10-12 -              Page 8


                           What support can I expect?

        I will try my best to eliminate any bugs reported to me, and to
        incorporate suggested enhancements and changes. However, my spare
        time is limited, so I can not guarantee continued or individual
        support. (But since I'm one of the owners of a consulting firm,
        you can always hire me to do it...). Please address all reports
        or questions to my business address:

                Ferrari electronic GmbH
                attn: Thomas Wagner
                Ruhlsdorfer Strasse 138
                D-14513 Teltow, Germany

                Phone: (+49 3328) 474 626
                Fax:   (+49 3328) 438 04-0
                BBS:   (+49 3328) 438 04-8 (from 8/15/93)

                Internet:    twagner@bix.com
                BIX:         twagner
                Compuserve:  100023,2042

        But, please, if at all possible, do it in writing. Please do not
        phone unless it is absolutely vital (or you have a business
        proposal). I like to hear about any applications for CTask, and
        if you are visiting Berlin, I also invite you to drop by for a
        talk. But I am usually not that happy when I am interrupted in my
        paid work by a phone call requesting support for a free product.

        I will try to answer all letters and Faxes I receive. However, I
        am usually not the fastest in this respect, so please be patient.
        If you don't hear for me for a while, send me a short reminder.
        The preferred, and the fastest, method to reach me is through
        BIX, which is connected to the Internet, or through our own
        BBS, which is scheduled to be operational August 15th, 1993.

        BIX (tm) is an Information Exchange, an electronic confe-
        rencing system owned by GVC. BIX can be (and is) accessed from all
        parts of the world. Although accessing BIX from outside the US
        isn't exactly cheap (don't ask me what I have to pay each month),
        the wealth of information available there, and the fast and
        extensive help the other members can give you on all kinds of
        hard- and software problems, makes it worth every Mark, Peseta,
        Franc, or Ruble you have to spend. New versions and updates of
        CTask will first appear on BIX.

        At the time of this writing, I am one of the moderators of the
        IBM exchange on BIX, moderating the "ibm.other" conference. I
        have created a support topic for CTask, where all suggested
        enhancements and changes, plus bug reports, can be posted. Just
        join "ibm.other", topic "ctask". You can also report problems of
        limited general interest via BIXmail to "twagner". Unless I am
        not able to reach the keyboard for some reason, I log on at least
        
        
        Ctask Manual       - Version 2.2 - 90-10-12 -              Page 9


        once per day, so you can expect relatively fast responses to your
        queries.

        To get more info on joining BIX, call the BIX Customer Service at
        800-227-2983 (U.S. and Canada), or 603-924-7681 (New Hampshire
        and outside the U.S.) from 8:30 to 23:00 Eastern Time (-5 GMT).
        BIX access currently is $39 for three months (flat fee, no extra
        charges for connect time), plus the applicable telecomm charges
        (Tymnet in the U.S. and Canada, your local PTT's Packet Net
        charges from outside the U.S.). 
        International users living near a BT Tymnet node can access BIX 
        through international Tymnet at special low rates. Call the BIX 
        helpline for Tymnet access points and charges. Other international 
        users will need an account (NUI) with their local packet net. 
        Please enquire at your post/telecomm office for details.


                                About this Release

        Since the Beta release of CTask in March 1988, CTask has found
        widespread distribution through several channels. I have heard
        from some users, and their suggestions have been implemented in
        this version as far as possible.

        Special thanks go to Kent J. Quirk, Peter Heinrich, Stephen
        Worthington, Burt Bicksler, Tron Hvaring, Joe Urso, Dave Goodwin,
        Chris Blum, and Dan Heine, for their bug reports, suggestions,
        and enhancements. Bug reports and suggestions also came in from
        others, thanks to all who wrote or called. The serial code in
        TSKSIO.C was enhanced for version 2.0 by S. Worthington, and his
        ideas on debugging have been incorporated in the version 2.1
        debugging mode. Dan Heine provided valuable info on 80x87 numeric
        coprocessor support. Chris Blum wrote the integer-based
        millisecond to clock-tick conversion routine.

        Again, please notify me of your CTask application, report bugs,
        or suggest changes and enhancements. If I know you're using
        CTask, I can notify you of possible new releases and of possible
        severe bugs.









        
        
        Ctask Manual       - Version 2.2 - 90-10-12 -             Page 10


                               Multitasking Basics

                                      Tasks

        In CTask, a "task" is defined as a (far) C function. The number
        of tasks is not limited, and one function may be used for several
        tasks. There is little difference between a task function and a
        normal function. The usual form of a task function is

             void Taskfunc my_task (farptr arg)
             {
                  one-time initialization code
                  while (TRUE)
                    {
                    processing code
                    }
             }

        A task function is (usually) never called directly. Rather, it is
        specified in the call to the create_task routine, and started by
        start_task. It will then continue to run, sharing the processor
        time with all other tasks, until it is "killed" by kill_task.
        Returning from the routine will have the same effect as a kill.
        The sharing of processor time is accomplished by "preempting" the
        tasks. Preemption means that the task is interrupted in the
        middle of some statement by a hardware interrupt (usually the
        timer), and is *not* immediately restarted when the interrupt
        handler returns. Instead, the next task that is able to run is
        activated by the "scheduler", with the interrupted task
        continuing its duty at some (normally unpredictable) later time.
        You can also have multi-tasking without preemption, and CTask
        supports this, too, but this requires full cooperation of all
        tasks in the system, such that no task continues to run for an
        extended period of time without passing control to other tasks by
        an explicit scheduling request, or by waiting for an event.

        The optional argument to the task function may be used if one
        function is to be used for more than one task, for example to
        pass a pointer to a static data area for use by this specific
        instance of the function.


                                      Events

        Tasks alone would be of limited use. If you have several routines
        which just do number crunching or sorting or such, making them
        into parallel tasks would be sensible only on a multiprocessor
        system. Normally, at least some of your tasks will wait for some
        outside "event" to happen, be it the user pressing a key, or a
        character arriving from the modem. Then there may be tasks which
        have to wait until another task finishes processing on some piece
        of data before they can continue. For this synchronization, there
        are a number of constructs in CTask, which I summarize under the
        
        
        Ctask Manual       - Version 2.2 - 90-10-12 -             Page 11


        name "event". Common to all events are the operations of waiting
        for an event to happen, and signalling that the event has
        happened. Using a CTask event is much more efficient than looping
        while waiting on some shared data location to change state, and
        also eliminates concurrency problems inherent in such a simple
        approach. Tasks waiting for an event are taken off the scheduler
        queue, so they no longer use processor time.


                                    Reentrancy

        One of the biggest problem with multitasking in general, and C on
        the PC in particular, is reentrancy. Reentrancy means that you
        can use a routine, be it you own, or one of the C run-time
        library, from different tasks at the same time. When writing your
        own code, you can easily avoid problems, but when using the run-
        time library routines, you often can only guess if the routines
        are reentrant or not.

        A routine is NOT reentrant if it modifies static data. This can
        be illustrated by the following nonsense example:

             int non_reentrant (int val)
             {    static int temp;
                  temp = val;
                  return temp * 2;
             }

        Now take two tasks, which call this routine. Task1 calls it with
        val=3, Task2 with val=7. What will be the return value for both
        tasks? You never know. There are three possible outcomes:

          1) The tasks execute sequentially. Task1 will get 6, and Task2
             14 as a result. This is what one normally expects.

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国内外成人在线| 一级日本不卡的影视| 国产一区二区三区av电影 | 国产成人精品一区二区三区四区| 欧美哺乳videos| 国产精品中文字幕一区二区三区| www国产成人| www.亚洲免费av| 亚洲欧美日韩国产手机在线| 欧美亚洲禁片免费| 日本中文在线一区| 国产日产亚洲精品系列| 成人午夜视频网站| 亚洲一线二线三线久久久| 欧美日韩大陆一区二区| 久久99精品国产麻豆婷婷| 日本一区二区动态图| 欧美三级欧美一级| 国内精品不卡在线| 日韩码欧中文字| 91精品国产品国语在线不卡| 国产不卡在线播放| 性做久久久久久久久| 欧美精品一区二区精品网| 粉嫩13p一区二区三区| 亚洲一区二区三区四区的| 日韩欧美第一区| 高清不卡一二三区| 亚洲国产中文字幕在线视频综合 | 色综合天天综合网国产成人综合天| 亚洲最色的网站| 久久精品一区二区三区不卡牛牛| 91麻豆蜜桃一区二区三区| 青青草成人在线观看| 中文字幕五月欧美| 亚洲美女在线一区| 日韩一级精品视频在线观看| 99精品在线免费| 精品一区二区三区视频| 悠悠色在线精品| 日本一区二区三区在线不卡| 欧美日韩免费电影| 99久久免费视频.com| 久久精品国产在热久久| 亚洲成人av一区二区| 综合久久久久综合| 久久免费偷拍视频| 91精品国产综合久久久久| 99热在这里有精品免费| 国产一区二区电影| 久久精品国产澳门| 亚洲欧美另类在线| 中文天堂在线一区| 久久久久国产免费免费| 欧美高清精品3d| 在线视频欧美精品| av电影天堂一区二区在线观看| 免费人成精品欧美精品| 亚洲午夜一区二区| 亚洲色图在线播放| 国产精品蜜臀av| 国产欧美一区二区精品仙草咪 | 精品国产免费一区二区三区香蕉| 在线观看一区日韩| 色综合一个色综合亚洲| 成人18精品视频| 风间由美一区二区av101| 精品一区二区三区视频| 久久国产视频网| 久久99热99| 久久99蜜桃精品| 国内精品伊人久久久久av一坑| 日日夜夜一区二区| 婷婷六月综合亚洲| 日韩综合小视频| 日韩av不卡在线观看| 午夜精品一区二区三区三上悠亚| 亚洲一区二区在线免费观看视频 | 亚洲三级在线免费观看| 中文天堂在线一区| 中文字幕在线不卡| 亚洲欧美一区二区三区极速播放| ...xxx性欧美| 亚洲综合在线五月| 首页亚洲欧美制服丝腿| 日本亚洲天堂网| 久久99九九99精品| 91麻豆精品国产| 欧美巨大另类极品videosbest | 欧美一级夜夜爽| 欧美另类高清zo欧美| 337p亚洲精品色噜噜噜| 日韩区在线观看| 国产视频亚洲色图| 最新国产成人在线观看| 一区二区三区电影在线播| 亚洲成人自拍偷拍| 美女视频黄频大全不卡视频在线播放| 蜜桃视频在线观看一区| 国产在线一区二区综合免费视频| 国产精品夜夜嗨| 91麻豆福利精品推荐| 欧美男人的天堂一二区| 精品国产一区二区三区久久久蜜月 | 美女性感视频久久| 福利视频网站一区二区三区| 91视频91自| 91精品国产综合久久精品麻豆| 日韩一级免费观看| 国产精品国产成人国产三级| 亚洲免费视频成人| 免费成人在线网站| a4yy欧美一区二区三区| 欧美另类变人与禽xxxxx| 久久综合色婷婷| 亚洲夂夂婷婷色拍ww47| 久久99久久精品欧美| 99riav一区二区三区| 日韩午夜中文字幕| 中文字幕一区二区三区不卡在线| 日韩高清在线观看| eeuss鲁片一区二区三区在线观看| 337p亚洲精品色噜噜噜| 国产精品久久国产精麻豆99网站| 偷窥国产亚洲免费视频| 国产91精品一区二区麻豆网站 | 精品亚洲国内自在自线福利| av一二三不卡影片| 日韩欧美中文字幕一区| 亚洲人成网站色在线观看| 精品影视av免费| 精品视频资源站| 亚洲国产精品黑人久久久| 亚洲成人先锋电影| 99精品热视频| 欧美成人艳星乳罩| 午夜久久久久久| 色八戒一区二区三区| 久久夜色精品国产欧美乱极品| 亚洲18女电影在线观看| 99精品久久免费看蜜臀剧情介绍| 精品88久久久久88久久久| 亚洲综合999| 成人avav影音| 久久久www成人免费毛片麻豆| 视频在线在亚洲| 日本韩国欧美一区| 国产精品久久夜| 国产精品911| 精品欧美一区二区三区精品久久| 亚洲在线观看免费视频| 91影院在线观看| 中文字幕高清不卡| 欧美人与性动xxxx| 亚洲裸体xxx| 99视频一区二区| 国产精品五月天| 国产iv一区二区三区| 精品88久久久久88久久久| 麻豆精品视频在线观看| 91精品国产福利| 天堂av在线一区| 欧美精品久久久久久久多人混战| 亚洲精品中文在线影院| 色综合一个色综合| 一区二区三区中文字幕电影| 91丝袜国产在线播放| 国产精品国产馆在线真实露脸| 成人午夜电影网站| 中文字幕国产一区| 波多野结衣中文字幕一区| 欧美经典三级视频一区二区三区| 国产激情偷乱视频一区二区三区 | 成人av片在线观看| 中文字幕精品一区二区三区精品| 丁香六月久久综合狠狠色| 国产视频一区二区三区在线观看| 高清成人免费视频| 日韩毛片精品高清免费| 欧美综合一区二区| 水野朝阳av一区二区三区| 日韩午夜在线观看视频| 国产精品自在欧美一区| 国产精品美女久久福利网站| 91老师片黄在线观看| 日韩毛片高清在线播放| 欧美视频你懂的| 毛片av一区二区| 国产亚洲一二三区| 91在线无精精品入口| 亚洲成人你懂的| 精品国产不卡一区二区三区| 国产成人亚洲综合a∨婷婷| 日韩一区欧美一区| 欧美日韩免费一区二区三区| 美国毛片一区二区| 蜜臀av一区二区三区| 国产欧美日韩亚州综合| 欧美中文字幕一区二区三区 | 亚洲成av人片在线观看无码|