Հոդվածի նյութը վերցված է իմ
Տոնային գեներատորի օրինակի բարելավում
Նախորդում
Այն բանից հետո, երբ մենք այլևս միացման կարիք չունենք, հիշողության ազատումը պետք է սկսվի տվյալների խողովակաշարի դադարեցմամբ: Դա անելու համար դուք պետք է անջատեք ժամացույցի աղբյուրը և ցուցիչը միացումից՝ օգտագործելով ֆունկցիան ms_ticker_detach(). Մեր դեպքում մենք պետք է անջատենք տիկերը ֆիլտրի մուտքագրումից voidsource:
ms_ticker_detach(ticker, voidsource)
Ի դեպ, կոնվեյերը կանգնեցնելուց հետո մենք կարող ենք փոխել նրա շղթան և նորից գործի դնել՝ նորից միացնելով տիկերը։
Այժմ մենք կարող ենք հեռացնել այն՝ օգտագործելով ֆունկցիան ms_ticker_destroy():
ms_ticker_destroy(ticker)
Փոխակրիչը կանգ է առել, և մենք կարող ենք սկսել դրա մասերը ապամոնտաժել՝ անջատելով ֆիլտրերը: Դա անելու համար օգտագործեք գործառույթը ms_filter_unlink():
ms_filter_unlink(voidsource, 0, dtmfgen, 0);
ms_filter_unlink(dtmfgen, 0, snd_card_write, 0);
արգումենտների նպատակը նույնն է, ինչ ֆունկցիայի համար ms_filter_link ().
Մենք հեռացնում ենք այժմ առանձնացված զտիչները՝ օգտագործելով ms_filter_destroy():
ms_filter_destroy(voidsource);
ms_filter_destroy(dtmfgen);
ms_filter_destroy(snd_card_write);
Մեր օրինակին ավելացնելով այս տողերը՝ մենք կստանանք ծրագրի ճիշտ ավարտ՝ հիշողության կառավարման տեսանկյունից։
Ինչպես տեսնում ենք, ծրագրի ճիշտ ավարտը մեզանից պահանջում էր ավելացնել մոտավորապես նույն թվով կոդ տողեր, ինչ սկզբում, միջինը չորս տող կոդ յուրաքանչյուր զտիչով: Ստացվում է, որ ծրագրի կոդի չափը կավելանա նախագծում օգտագործվող ֆիլտրերի քանակին համամասնորեն։ Եթե խոսենք շղթայում հազար ֆիլտրի մասին, ապա դրանք ստեղծելու և ոչնչացնելու համար սովորական գործողությունների չորս հազար տող կավելացվի ձեր կոդը:
Այժմ դուք գիտեք, թե ինչպես ճիշտ դադարեցնել ծրագիրը, որն օգտագործում է մեդիա հոսք: Հետևյալ օրինակներում, հանուն կոմպակտության, ես «կմոռանամ» անել դա։ Բայց դուք չեք մոռանա?
Մեդիա հոսքի մշակողները չեն տրամադրել ծրագրային գործիքներ՝ սխեմաների հավաքման/ապամոնտաժման ժամանակ ֆիլտրերի մանիպուլյացիայի համար հեշտացնելու համար: Այնուամենայնիվ, կա օգնական, որը թույլ է տալիս արագորեն տեղադրել/հեռացնել ֆիլտրը շղթայից:
Այս հարցի լուծմանը կանդրադառնանք ավելի ուշ, երբ մեր օրինակներում ֆիլտրերի թիվը գերազանցի մի երկու տասնյակը։
Հաջորդը
Source: www.habr.com