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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ctask.doc

?? 用TC2實現的DOS多任務功能
?? DOC
?? 第 1 頁 / 共 5 頁
字號:
        And, there is no warranty that CTask does perform without errors,
        or does exactly what you or I intended. So CTask should not be
        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
                Beusselstrasse 27
                D-1000 Berlin 21, Germany

                Phone: (+49 30) 396 50 21
                Fax:   (+49 30) 396 80 20

                BIX:   twagner
                UUCP:  oeschi@netmbx.UUCP (attn: Thomas Wagner)


        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 same goes for UUCP E-mail, since I'm not directly connected.
        The preferred, and the fastest, method to reach me is through
        BIX.

        BIX (tm) is the BYTE Information Exchange, an electronic confe-
        rencing system created by McGraw-Hill, the publishers of the well
        renowned BYTE magazine. 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.). If you're calling from the US,
        you can subscribe by dialling BIX direct at 617-861-9767. Hit the
        return key, and enter "bix" at the 'login (enter "bix")' prompt.
        At the 'Name?' prompt, enter "bix.flatfee". 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. If you already own a NUI, enter
        the BIX international network address (NUA), "310690157800", and
        enter "bix.flatfee" at the 'Name?' prompt.


                                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;
             }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品成人免费| 亚洲在线免费播放| 337p粉嫩大胆噜噜噜噜噜91av| 国产成人亚洲精品狼色在线| 美国一区二区三区在线播放| 欧美aaaaa成人免费观看视频| 国产精品全国免费观看高清 | 亚洲欧美日韩国产综合在线| 国产精品传媒在线| 中文字幕中文字幕一区二区 | 国产精品电影院| 91精品国产91久久综合桃花| 欧美精品在线观看一区二区| 欧美一区二区三区四区在线观看| 成人精品国产福利| 91女神在线视频| 欧美在线|欧美| 欧美一区二区三区视频在线| 精品久久国产字幕高潮| 91福利在线播放| 欧美片在线播放| 精品国产一区二区三区av性色| 欧美日韩国产综合一区二区 | 日韩欧美一区电影| 欧美电影免费观看高清完整版在线观看 | 国产福利一区二区三区视频在线| 奇米精品一区二区三区在线观看 | 国产1区2区3区精品美女| 99视频一区二区| 国产精品99久久久久久有的能看 | 欧美网站一区二区| 欧美一区二区三区影视| 久久蜜桃av一区精品变态类天堂| 欧美精品久久久久久久久老牛影院| 色综合天天综合给合国产| 欧美三级午夜理伦三级中视频| 一本在线高清不卡dvd| 欧美色大人视频| 久久毛片高清国产| 久久亚洲春色中文字幕久久久| 欧美变态凌虐bdsm| 国产精品高清亚洲| 奇米色一区二区三区四区| 国产91精品免费| 91麻豆精品国产91久久久| 亚洲国产高清在线观看视频| 香蕉成人伊视频在线观看| 亚洲自拍偷拍av| 国产精品一二三四区| 欧美影院一区二区三区| 久久久久久一二三区| 久久综合中文字幕| 亚洲综合在线电影| 92精品国产成人观看免费 | 欧美日韩在线电影| 欧美国产激情二区三区| 日韩精品每日更新| 美国毛片一区二区三区| 91在线国内视频| 亚洲精品一区二区精华| 亚洲成人在线网站| jlzzjlzz亚洲日本少妇| 欧美大黄免费观看| 亚洲成av人影院| av不卡免费在线观看| 亚洲精品一区二区三区精华液| 国产午夜精品理论片a级大结局| 国产精品女同一区二区三区| 日韩成人午夜电影| 精品一区二区三区久久| 欧美日韩一区久久| 亚洲视频一区在线| 午夜精品久久久久久久| 91丨国产丨九色丨pron| 久久久久久久综合日本| 免费在线观看成人| 欧美绝品在线观看成人午夜影视| 欧美成人欧美edvon| 婷婷中文字幕一区三区| 欧美性猛片aaaaaaa做受| 亚洲欧洲一区二区在线播放| 国产麻豆一精品一av一免费| 日韩视频一区二区三区在线播放| 国产欧美一区二区精品久导航| 亚洲丝袜精品丝袜在线| 不卡欧美aaaaa| 久久九九影视网| 国产又粗又猛又爽又黄91精品| 成人激情免费网站| 国产人久久人人人人爽| 国产一区二区精品久久99| 精品久久99ma| 久久国产精品第一页| 欧美一级xxx| 中文字幕一区二区三区不卡 | 成人av网址在线| 91色九色蝌蚪| 日韩三级在线观看| 自拍偷拍亚洲综合| 99久久免费视频.com| 日韩欧美一级二级三级| 日本在线不卡一区| 成人黄色综合网站| 国产精品美女久久久久aⅴ国产馆| 亚洲不卡在线观看| 日韩一区二区在线观看视频| 国产精品久久久久久久久快鸭 | 国产精品乱人伦| 床上的激情91.| 国产精品污www在线观看| 日韩高清在线不卡| 欧美一区二区三区日韩视频| 久久精工是国产品牌吗| 久久久久久久综合狠狠综合| 成人精品视频一区| 亚洲乱码国产乱码精品精小说| 国产裸体歌舞团一区二区| 国产区在线观看成人精品| 9i看片成人免费高清| 一区二区三区色| 成人免费视频视频在线观看免费| 91精品国产综合久久香蕉麻豆| 亚洲精品视频在线| 欧美二区三区91| 精品一区二区国语对白| 欧美精品一卡二卡| 韩国午夜理伦三级不卡影院| 欧美极品美女视频| 另类小说欧美激情| 中文字幕av一区二区三区高| 色天天综合色天天久久| 国产精品热久久久久夜色精品三区 | 一二三区精品视频| 欧美猛男男办公室激情| 国产一区二区主播在线| 亚洲欧洲日本在线| 欧美高清视频www夜色资源网| 有码一区二区三区| 91一区二区在线| 国产午夜精品一区二区三区嫩草| 精品一区二区三区日韩| 国产精品久久三| 欧美日本一道本| 国产a视频精品免费观看| 亚洲一区二区三区自拍| 色av一区二区| 捆绑变态av一区二区三区| 亚洲欧洲三级电影| 日韩免费观看2025年上映的电影| 亚洲444eee在线观看| 在线精品视频小说1| 久久激情五月婷婷| 亚洲精品福利视频网站| 色天天综合色天天久久| 久久99精品国产麻豆婷婷| 精品国产伦理网| 欧美性大战xxxxx久久久| 国产**成人网毛片九色| 日本不卡的三区四区五区| 911国产精品| 97精品久久久午夜一区二区三区| 中文字幕中文字幕一区| 精品久久久久久久久久久久包黑料| 九九精品一区二区| 亚洲午夜久久久久中文字幕久| 欧美视频一区二区三区四区| 粉嫩在线一区二区三区视频| 蜜桃一区二区三区在线观看| 精品国产在天天线2019| 欧美性生活久久| 成人av电影在线| 国产伦理精品不卡| 首页国产欧美日韩丝袜| 亚洲免费观看在线视频| 欧美午夜精品久久久| aaa亚洲精品一二三区| 精品写真视频在线观看 | 国产精品无人区| 精品美女一区二区| 成人短视频下载| 国产一区二区三区四区五区美女| 日本一区二区三区四区| 日韩欧美二区三区| 3d动漫精品啪啪| 欧美日韩激情一区二区三区| 91色视频在线| av在线播放成人| 成人午夜激情在线| 亚洲自拍偷拍麻豆| 精品福利一区二区三区| 91麻豆精品久久久久蜜臀 | av一区二区三区四区| 国产精品主播直播| 黑人巨大精品欧美黑白配亚洲| 亚洲欧美自拍偷拍色图| 欧美国产乱子伦 | 亚洲品质自拍视频| 在线播放亚洲一区| 成人精品亚洲人成在线| 国产成人aaaa|