Visual FoxPro ile shelled bir uygulamanın işlem önceliğini değiştirme

Makale çevirileri Makale çevirileri
Makale numarası: 193846 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Bu Sayfada

Özet

Bir işlem önceliğini, yürütme Win32 çekirdek tarafından nasıl zamanlanır belirler. Daha yüksek önceliğe sahip işlemler daha düşük bir önceliğe sahip işlemler daha hızlı yürütülür. Bu makalede, shelled bir uygulamanın işlem önceliğini değiştirme.

Daha fazla bilgi

Win32 aşağıdaki dört öncelik sınıflarını destekler:
  • Boşta
  • Normal
  • Yüksek
  • Gerçek zamanlı
Boşta Sistem izleme uygulamalar veya ekran koruyucular doğru önceliğidir.

Normal öncelik sınıfına hiçbir özel zamanlama gereksinimlerine sahip bir işlem gösteren, varsayılandır.

Yüksek öncelikli düzgün çalışması için hemen yürütme gerektiren zaman önemli görevler gerçekleştiren bir işlemi gösterir. Yüksek öncelikli sınıfı bir işlemin iş parçacıklarının iş parçacıkları, normal veya boşta öncelik sınıfı işlemlerin preempt. Işletim sistemi üzerindeki yükü ne olursa olsun, kullanıcı tarafından çağrıldığında hızla yanıt vermesi gereken Windows görev listesi buna bir örnektir. CPU bağlı uygulama bir <a0>Yüksek ã¶ncelikli sınıf kullanılabilir hemen hemen tüm döngüleri kullanabileceğinizden aşırı yüksek öncelikli sınıfını kullanırken dikkatli.

Realtime önceliği, olası en yüksek önceliğe sahip olan bir işlemi belirtir. Gerçek zamanlı öncelik sınıfı herhangi bir işlemin iş parçacıklarının iş parçacıkları, önemli görevler gerçekleştiren işletim sistemi işlemleri de dahil olmak üzere tüm diğer işlemlerin, preempt. Örneğin, gerçek zamanlı bir işlem, daha fazla bilgi için çok kısa bir aralık flush veya farenin yanıt vermemesine neden olmasını neden, disk önbelleklerinin neden çok yürütür. Bu öncelik neredeyse hiçbir zaman kullanılmalıdır.

Işlemin CreateProcess API çağrısının parametrelerden atayarak ayarlanır.

A?a??daki örnek, Windows NT 4.0 ve sonraki Windows işletim sistemleri bir boşta öncelik kullanarak Windows Not DEFTERI uygulaması çalıştıran gösterir. Işlem önceliğini CreateProcess() için geçirilen 'dwCreationFlags' değişkeni tarafından denetlenir. DEFINEs dört desteklenen öncelik sınıfları için <a0>Örnek</a0> programının en üstünde listelenir.

Bir kez Notepad.exe, önceliği'ni inceleyin, Windows Görev Yöneticisi'ni başlatın, işlemler sekmesini seçin, Notepad.exe'ı sağ tıklatın ve açılan menüden 'Öncelik Ayarla' seçmek için çalışıyor.

Notepad.exe için tam olarak nitelenmiş yol adı değişikliği 'File2Run' değişken atama deyimini de gerekebilir.

Örnek kod

   #DEFINE NORMAL_PRIORITY_CLASS 32
   #DEFINE IDLE_PRIORITY_CLASS 64
   #DEFINE HIGH_PRIORITY_CLASS 128
   #DEFINE REALTIME_PRIORITY_CLASS 1600

   DECLARE INTEGER CreateProcess IN kernel32.DLL ;
      INTEGER lpApplicationName, ;
      STRING lpCommandLine, ;
      INTEGER lpProcessAttributes, ;
      INTEGER lpThreadAttributes, ;
      INTEGER bInheritHandles, ;
      INTEGER dwCreationFlags, ;
      INTEGER lpEnvironment, ;
      INTEGER lpCurrentDirectory, ;
      STRING @lpStartupInfo, ;
      STRING @lpProcessInformation

   DECLARE INTEGER GetLastError IN kernel32.DLL

   * Startup info is 68 bytes, of which we need to
   * initially populate the 'cb' or Count of Bytes member
   * with the overall length of the structure.
   * The remainder should be 0-filled.
   START = long2str(68) + REPLICATE(CHR(0), 64)

   * PROCESS_INFORMATION structure is 4 longs,
   * or 4*4 bytes = 16 bytes, which we'll initially zero.
   process_info = REPLICATE(CHR(0), 16)

   * Start a copy of NOTEPAD (EXE name must be null-terminated)
   File2Run = "C:\WINNT\NOTEPAD.EXE" + CHR(0)

   * Call CreateProcess, obtain a process handle. Treat the
   * application to run as the 'command line' argument, accept
   * all other defaults. Important to pass the start and
   * process_info by reference.
   RetCode = CreateProcess(0, File2Run, 0, 0, 1, ;
      IDLE_PRIORITY_CLASS, 0, 0, @START, @process_info)

   * Unable to run, exit now.
   IF RetCode = 0
      =MESSAGEBOX("Error occurred. Error code: ", GetLastError())
      RETURN
   ENDIF

   ********************
   FUNCTION long2str
   ********************
   * passed : 32-bit non-negative numeric value (m.longval)
   * returns : ascii character representation of passed
   *    value in low-high format (m.retstr)
   * example :
   *   m.long = 999999
   *   m.longstr = long2str(m.long)
   PARAMETERS m.longval

   PRIVATE i, m.retstr

   m.retstr = ""
   FOR i = 24 TO 0 STEP -8
      m.retstr = CHR(INT(m.longval/(2^i))) + m.retstr
      m.longval = MOD(m.longval, (2^i))
   NEXT
   RETURN m.retstr
						

Referanslar

"Gelişmiş Windows", Jeffrey Richter, Microsoft Press, sayfaları 92-103, üçüncü sürüm 1997, ISBN: 1-57231-548-2

Özellikler

Makale numarası: 193846 - Last Review: 27 Ocak 2005 Perşembe - Gözden geçirme: 3.4
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Visual FoxPro 3.0b Standard Edition
  • Microsoft Visual FoxPro 5.0 Standard Edition
  • Microsoft Visual FoxPro 5.0a
  • Microsoft Visual FoxPro 6.0 Professional Edition
  • Microsoft Visual FoxPro 7.0 Professional Edition
  • Microsoft Visual FoxPro 8.0 Professional Edition
  • Microsoft Visual FoxPro 9.0 Professional Edition
Anahtar Kelimeler: 
kbmt kbhowto KB193846 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:193846

Geri Bildirim Ver

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com