2010-12-08 58 views
0

我使用Qt創建了一個應用程序,我使用Magick ++庫操縱圖像。處理文件會使我的程序進入無響應模式。新進程或新線程?

問題是當我試圖將效果應用到圖像列表時,程序停止響應,直到處理完成,我想這是非常正常的,但我也猜測應該有一個解決方案,使用新的處理?併發或許?

這是我在處理圖像時正在執行的代碼。

foreach (QFileInfo f, list) 
{ 

    Image image; 
    image.read(qPrintable(f.absoluteFilePath())); 

    try { 

     //Apply effects effects 
     image.addNoise(GaussianNoise); 
     image.magick("png"); 
     image.rotate(90); 
     image.write("//users//files//"); 
     } 

    catch (Magick::Exception & error) 
    { 
    // Displaying any possible errors on the text browser 
    ui->textBrowser_error->setText(error.what()); 

    } 

} 

任何人都可以告訴我一個代碼提示,可以幫助我通過進入無響應模式來避免我的程序?

這是當前解決方案(感謝OneOfOne)

void ClassName::processAll() { 
    QList<QFileInfo> files = list; 
QFuture<void> future = QtConcurrent::map(files, &ClassName::processImage); 
} 

void ClassName::processImage(QFileInfo & f) { 
    Image image; 
    image.read(qPrintable(f.absoluteFilePath())); 

try { 
    // Apply effects effects 
     image.magick("png"); 
     image.rotate(90); 
     image.write("//Users//macmini//Desktop//files"); 
    } catch (Magick::Exception & error) { 
     // Displaying any possible errors on the text browser. 
     /* ui->textBrowser_error->setText(error.what()); <- This will not run so I had to commented out */ 

    } 
} 

這使得我的程序編譯,但在那之後我得到蘋果一個運行時錯誤:

Process:   ProgramName [2801] 
    Path:   /Users/macmini/ProgramName-build-desktop/ProgramName.app/Contents/MacOS/ProgramName 
    Identifier:  com.yourcompany.ProgramName 
    Version:   ??? (???) 
    Code Type:  X86-64 (Native) 
    Parent Process: Qt Creator [2630] 

    Date/Time:  2010-12-13 18:55:54.381 +0000 
    OS Version:  Mac OS X 10.6.5 (10H574) 
    Report Version: 6 

    Interval Since Last Report:   459149 sec 
    Crashes Since Last Report:   54 
    Per-App Interval Since Last Report: 59953 sec 
    Per-App Crashes Since Last Report: 16 
    Anonymous UUID:      2FA19EA1-D3CE-479B-B074-AB6A297BEFCF 

    Exception Type: EXC_BAD_ACCESS (SIGSEGV) 
    Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000010 
    Crashed Thread: 7 

    Thread 0: Dispatch queue: com.apple.main-thread 
    0 com.apple.Foundation   0x00007fff83a9927d -[NSConcreteMapTable objectForKey:] + 1 
    1 com.apple.AppKit    0x00007fff80f670df -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 1104 
    2 com.apple.AppKit    0x00007fff80f66ab0 -[NSThemeFrame _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 254 
    3 com.apple.AppKit    0x00007fff80f63362 -[NSView _displayRectIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:] + 2683 
    4 com.apple.AppKit    0x00007fff80edcb9a -[NSView displayIfNeeded] + 969 
    5 QtGui       0x0000000100346cca -[QCocoaWindow displayIfNeeded] + 250 
    6 com.apple.AppKit    0x00007fff80ed7a46 _handleWindowNeedsDisplay + 678 
    7 com.apple.CoreFoundation  0x00007fff86644b37 __CFRunLoopDoObservers + 519 
    8 com.apple.CoreFoundation  0x00007fff86620464 __CFRunLoopRun + 468 
    9 com.apple.CoreFoundation  0x00007fff8661fdbf CFRunLoopRunSpecific + 575 
    10 com.apple.HIToolbox    0x00007fff840a291a RunCurrentEventLoopInMode + 333 
    11 com.apple.HIToolbox    0x00007fff840a267d ReceiveNextEventCommon + 148 
    12 com.apple.HIToolbox    0x00007fff840a25d8 BlockUntilNextEventMatchingListInMode + 59 
    13 com.apple.AppKit    0x00007fff80eace64 _DPSNextEvent + 718 
    14 com.apple.AppKit    0x00007fff80eac7a9 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 155 
    15 com.apple.AppKit    0x00007fff80e7248b -[NSApplication run] + 395 
    16 QtGui       0x0000000100354344 QEventDispatcherMac::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 1588 
    17 QtCore       0x00000001010bde54 QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 68 
    18 QtCore       0x00000001010be174 QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 180 
    19 QtCore       0x00000001010bf79c QCoreApplication::exec() + 188 
    20 com.yourcompany.ProgramName  0x00000001000031cb main + 107 
    21 com.yourcompany.ProgramName  0x0000000100002fb6 _start + 224 
    22 com.yourcompany.ProgramName  0x0000000100002ed5 start + 33 

    Thread 1: Dispatch queue: com.apple.libdispatch-manager 
    0 libSystem.B.dylib    0x00007fff8061a16a kevent + 10 
    1 libSystem.B.dylib    0x00007fff8061c03d _dispatch_mgr_invoke + 154 
    2 libSystem.B.dylib    0x00007fff8061bd14 _dispatch_queue_invoke + 185 
    3 libSystem.B.dylib    0x00007fff8061b83e _dispatch_worker_thread2 + 252 
    4 libSystem.B.dylib    0x00007fff8061b168 _pthread_wqthread + 353 
    5 libSystem.B.dylib    0x00007fff8061b005 start_wqthread + 13 

    Thread 2: com.apple.CFSocket.private 
    0 libSystem.B.dylib    0x00007fff80644e92 select$DARWIN_EXTSN + 10 
    1 com.apple.CoreFoundation  0x00007fff86642498 __CFSocketManager + 824 
    2 libSystem.B.dylib    0x00007fff8063a536 _pthread_start + 331 
    3 libSystem.B.dylib    0x00007fff8063a3e9 thread_start + 13 

    Thread 3: 
    0 libSystem.B.dylib    0x00007fff8061a16a kevent + 10 
    1 QtCore       0x00000001010aae8a QKqueueFileSystemWatcherEngine::run() + 154 
    2 QtCore       0x00000001010064cf QThreadPrivate::start(void*) + 175 
    3 libSystem.B.dylib    0x00007fff8063a536 _pthread_start + 331 
    4 libSystem.B.dylib    0x00007fff8063a3e9 thread_start + 13 

    Thread 4: 
    0 libSystem.B.dylib    0x00007fff8061af8a __workq_kernreturn + 10 
    1 libSystem.B.dylib    0x00007fff8061b39c _pthread_wqthread + 917 
    2 libSystem.B.dylib    0x00007fff8061b005 start_wqthread + 13 

    Thread 5: 
    0 libSystem.B.dylib    0x00007fff8061af8a __workq_kernreturn + 10 
    1 libSystem.B.dylib    0x00007fff8061b39c _pthread_wqthread + 917 
    2 libSystem.B.dylib    0x00007fff8061b005 start_wqthread + 13 

    Thread 6: 

    Thread 7 Crashed: 
    0 libMagickCore.4.dylib   0x000000010144068c gomp_resolve_num_threads + 28 
    1 libMagickCore.4.dylib   0x00000001012c5d95 AcquirePixelCache + 309 
    2 libMagickCore.4.dylib   0x000000010137be02 AcquireImage + 370 
    3 libMagick++.4.dylib    0x00000001002b5057 Magick::ImageRef::ImageRef() + 87 
    4 libMagick++.4.dylib    0x00000001002ab742 Magick::Image::Image() + 50 
    5 com.yourcompany.ProgramName  0x00000001000047e1 ProgramName::processImage(QFileInfo&) + 33 
    6 com.yourcompany.ProgramName  0x0000000100008d1d QtConcurrent::MapKernel<QList<QFileInfo>::iterator, QtConcurrent::FunctionWrapper1<void, QFileInfo&> >::runIteration(QList<QFileInfo>::iterator, int, void*) + 13 
    7 com.yourcompany.ProgramName  0x0000000100009238 QtConcurrent::MapKernel<QList<QFileInfo>::iterator, QtConcurrent::FunctionWrapper1<void, QFileInfo&> >::runIterations(QList<QFileInfo>::iterator, int, int, void*) + 72 
    8 com.yourcompany.ProgramName  0x000000010000974d QtConcurrent::IterateKernel<QList<QFileInfo>::iterator, void>::threadFunction() + 573 
    9 QtCore       0x0000000100fffcb9 QtConcurrent::ThreadEngineBase::run() + 57 
    10 QtCore       0x0000000101002425 QThreadPoolThread::run() + 117 
    11 QtCore       0x00000001010064cf QThreadPrivate::start(void*) + 175 
    12 libSystem.B.dylib    0x00007fff8063a536 _pthread_start + 331 
    13 libSystem.B.dylib    0x00007fff8063a3e9 thread_start + 13 

    Thread 8: 
    0 libSystem.B.dylib    0x00007fff8063a3dc thread_start + 0 

    Thread 7 crashed with X86 Thread State (64-bit): 
     rax: 0x0000000000000000 rbx: 0x0000000000000000 rcx: 0x0000000000000000 rdx: 0x0000000000002148 
     rdi: 0x0000000000000104 rsi: 0x0000000000000000 rbp: 0x0000000116580b10 rsp: 0x0000000116580b00 
     r8: 0x0000000101b6e000 r9: 0x0000000116580b00 r10: 0x00007fffffe00050 r11: 0x0000000102b6c600 
     r12: 0x0000000000000000 r13: 0x0000000102b28000 r14: 0x0000000102b82a68 r15: 0x0000000116580d00 
     rip: 0x000000010144068c rfl: 0x0000000000010297 cr2: 0x0000000000000010 

    Binary Images: 
      0x100000000 -  0x100290fe7 +com.yourcompany.ProgramName ??? (???) <688ECF56-94E8-00A4-B958-94612C902F9F> /Users/macmini/ProgramName-build-desktop/ProgramName.app/Contents/MacOS/ProgramName 
      0x10029b000 -  0x1002dcff7 +libMagick++.4.dylib 5.0.0 (compatibility 5.0.0) <51C6408C-04BD-548B-E2FC-F112252FA2BD> /opt/local/lib/libMagick++.4.dylib 
      0x100317000 -  0x100ceafef +QtGui 4.7.0 (compatibility 4.7.0) <BD43BAAD-873D-45E8-3605-1E344992BB51> /Library/Frameworks/QtGui.framework/Versions/4/QtGui 
      0x100f92000 -  0x101217fef +QtCore 4.7.0 (compatibility 4.7.0) <AEA4A1B9-46B8-7621-8D00-555040D89C56> /Library/Frameworks/QtCore.framework/Versions/4/QtCore 
      0x1012ab000 -  0x101482ff7 +libMagickCore.4.dylib 5.0.0 (compatibility 5.0.0) <25912B2F-55D0-2DA9-DBBF-43986B432952> /opt/local/lib/libMagickCore.4.dylib 
      0x10151d000 -  0x10162efff +libMagickWand.4.dylib 5.0.0 (compatibility 5.0.0) <80E63BB5-E18A-2BAB-7AFF-D3037AE57427> /opt/local/lib/libMagickWand.4.dylib 
      0x10164c000 -  0x101679fe7 +liblcms.1.dylib 2.19.0 (compatibility 2.0.0) <2B45C260-15E9-151E-4C8A-05D6B402522B> /opt/local/lib/liblcms.1.dylib 
      0x101686000 -  0x1016dffff +libtiff.3.dylib 13.4.0 (compatibility 13.0.0) <262BF250-EA47-62E2-D6CB-573CB1E8DD6D> /opt/local/lib/libtiff.3.dylib 
      0x1016ec000 -  0x101721ff7 +libjpeg.8.dylib 9.2.0 (compatibility 9.0.0) <055E3C7A-A428-2298-816E-79D4279DEE25> /opt/local/lib/libjpeg.8.dylib 
      0x101728000 -  0x101756ff7 +libfontconfig.1.dylib 6.4.0 (compatibility 6.0.0) <ABE342A5-D352-6D3E-D588-60CEE60396EA> /opt/local/lib/libfontconfig.1.dylib 
      0x101761000 -  0x101780fef +libexpat.1.dylib 7.2.0 (compatibility 7.0.0) <4F23C4ED-72D8-5478-FBBC-5DC01F8E4752> /opt/local/lib/libexpat.1.dylib 
      0x101787000 -  0x101807fff +libfreetype.6.dylib 13.1.0 (compatibility 13.0.0) <1DBA7D79-C80E-B3F6-6BEF-5ECBBB318ADE> /opt/local/lib/libfreetype.6.dylib 
      0x10181c000 -  0x101918fe7 +libiconv.2.dylib 8.0.0 (compatibility 8.0.0) <6907D6DB-2535-7725-484F-74378F42AFED> /opt/local/lib/libiconv.2.dylib 
      0x101925000 -  0x101933ff7 +libXext.6.dylib 11.0.0 (compatibility 11.0.0) <CB09409A-FEA2-3CF5-769A-127ECCCE2963> /opt/local/lib/libXext.6.dylib 
      0x101939000 -  0x101986fe7 +libXt.6.dylib 7.0.0 (compatibility 7.0.0) <D780E06E-3060-3D13-BCEC-2F297E840939> /opt/local/lib/libXt.6.dylib 
      0x10199e000 -  0x1019acfff +libbz2.1.0.dylib 1.0.6 (compatibility 1.0.0) <B2276F4D-BAC5-E9C3-690C-DCC478079569> /opt/local/lib/libbz2.1.0.dylib 
      0x1019b1000 -  0x1019c5ff7 +libz.1.dylib 1.2.5 (compatibility 1.0.0) <6D767FC2-DF89-6017-4B82-A1E5EB8CEED9> /opt/local/lib/libz.1.dylib 
      0x1019c9000 -  0x1019cbff7 libclparser.dylib ??? (???) <9985A543-86E9-DA9E-3B97-80CA7AAE84A1> 
--Code Removed-- It didnt fit! 

/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvMisc.dylib 
     0x7fff85f7e000 -  0x7fff85ffdfe7 com.apple.audio.CoreAudio 3.2.6 (3.2.6) <1DD64A62-0DE4-223F-F781-B272FECF80F0> /System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio 
     0x7fff85ffe000 -  0x7fff86083ff7 com.apple.print.framework.PrintCore 6.3 (312.7) <CDFE82DD-D811-A091-179F-6E76069B432D> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/Versions/A/PrintCore 
     0x7fff86084000 -  0x7fff86588fe7 com.apple.VideoToolbox 0.484.20 (484.20) <8B6B82D2-350B-E9D3-5433-51453CDA65B4> /System/Library/PrivateFrameworks/VideoToolbox.framework/Versions/A/VideoToolbox 
     0x7fff865d4000 -  0x7fff8674bfe7 com.apple.CoreFoundation 6.6.4 (550.42) <770C572A-CF70-168F-F43C-242B9114FCB5> /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation 
     0x7fff8674c000 -  0x7fff8679bff7 com.apple.DirectoryService.PasswordServerFramework 6.0 (6.0) <14FD0978-4BE0-336B-A19E-F388694583EB> /System/Library/PrivateFrameworks/PasswordServer.framework/Versions/A/PasswordServer 
     0x7fff867e0000 -  0x7fff86821ff7 com.apple.CoreMedia 0.484.20 (484.20) <42F3B74A-F886-33A0-40EE-8399B12BD32A> /System/Library/PrivateFrameworks/CoreMedia.framework/Versions/A/CoreMedia 
     0x7fff86822000 -  0x7fff868c2fff com.apple.LaunchServices 362.1 (362.1) <2740103A-6C71-D99F-8C6F-FA264546AD8F> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/LaunchServices 
     0x7fff868c3000 -  0x7fff868e4fff libresolv.9.dylib 41.0.0 (compatibility 1.0.0) <6993F348-428F-C97E-7A84-7BD2EDC46A62> /usr/lib/libresolv.9.dylib 
     0x7fff868e5000 -  0x7fff86d28fef libLAPACK.dylib 219.0.0 (compatibility 1.0.0) <0CC61C98-FF51-67B3-F3D8-C5E430C201A9> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib 
     0x7fff86d3f000 -  0x7fff86d55fe7 com.apple.MultitouchSupport.framework 207.10 (207.10) <1828C264-A54A-7FDD-FE1B-49DDE3F50779> /System/Library/PrivateFrameworks/MultitouchSupport.framework/Versions/A/MultitouchSupport 
     0x7fff86d56000 -  0x7fff86da7fef com.apple.HIServices 1.8.1 (???) <BE479ABF-3D27-A5C7-800E-3FFC1731767A> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/HIServices 
     0x7fff86de0000 -  0x7fff86e03fff com.apple.opencl 12.3 (12.3) <D30A45FC-4520-45AF-3CA5-092313DB5D54> /System/Library/Frameworks/OpenCL.framework/Versions/A/OpenCL 
     0x7fff86e04000 -  0x7fff86ebafff libobjc.A.dylib 227.0.0 (compatibility 1.0.0) <F206BE6D-8777-AE6C-B367-7BEA76C14241> /usr/lib/libobjc.A.dylib 
     0x7fff86f54000 -  0x7fff86f6afff com.apple.ImageCapture 6.0.1 (6.0.1) <09ABF2E9-D110-71A9-4A6F-8A61B683E936> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/ImageCapture.framework/Versions/A/ImageCapture 
     0x7fff86f6b000 -  0x7fff86f9cfff libGLImage.dylib ??? (???) <57DA0064-4581-62B8-37A8-A07ADEF46EE2> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLImage.dylib 
     0x7fff86f9d000 -  0x7fff86fa1ff7 libCGXType.A.dylib 545.0.0 (compatibility 64.0.0) <63F77AC8-84CB-0C2F-8D2B-190EE5CCDB45> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/Versions/A/Resources/libCGXType.A.dylib 
     0x7fff86fa2000 -  0x7fff86fc7ff7 com.apple.CoreVideo 1.6.2 (45.6) <E138C8E7-3CB6-55A9-0A2C-B73FE63EA288> /System/Library/Frameworks/CoreVideo.framework/Versions/A/CoreVideo 
     0x7fff86fd4000 -  0x7fff86fedfff com.apple.CFOpenDirectory 10.6 (10.6) <CCF79716-7CC6-2520-C6EB-A4F56AD0A207> /System/Library/Frameworks/OpenDirectory.framework/Versions/A/Frameworks/CFOpenDirectory.framework/Versions/A/CFOpenDirectory 
     0x7fff86fee000 -  0x7fff870e6ff7 libiconv.2.dylib 7.0.0 (compatibility 7.0.0) <7E4ADB5A-CC77-DCFD-3E54-2F35A2C8D95A> /usr/lib/libiconv.2.dylib 
     0x7fff870e7000 -  0x7fff872a5fff libicucore.A.dylib 40.0.0 (compatibility 1.0.0) <781E7B63-2AD0-E9BA-927C-4521DB616D02> /usr/lib/libicucore.A.dylib 
     0x7fff872a6000 -  0x7fff87643fe7 com.apple.QuartzCore 1.6.3 (227.34) <215222AF-B30A-7CE5-C46C-1A766C1D1D2E> /System/Library/Frameworks/QuartzCore.framework/Versions/A/QuartzCore 
     0x7fff87644000 -  0x7fff87646fff com.apple.print.framework.Print 6.1 (237.1) <CA8564FB-B366-7413-B12E-9892DA3C6157> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Print.framework/Versions/A/Print 
     0x7fff87682000 -  0x7fff8769dff7 com.apple.openscripting 1.3.1 (???) <FD46A0FE-AC79-3EF7-AB4F-396D376DDE71> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/OpenScripting.framework/Versions/A/OpenScripting 
     0x7fff8769e000 -  0x7fff8769ffff liblangid.dylib ??? (???) <EA4D1607-2BD5-2EE2-2A3B-632EEE5A444D> /usr/lib/liblangid.dylib 
     0x7fff876a0000 -  0x7fff876bdff7 libPng.dylib ??? (???) <14043CBC-329F-4009-299E-DEE411E16134> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/libPng.dylib 
     0x7fff87901000 -  0x7fff8794bff7 com.apple.Metadata 10.6.3 (507.12) <9231045A-E2E3-B0C2-C81A-92C9EA98A4DF> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Metadata 
     0x7fff87af2000 -  0x7fff87b01fff com.apple.NetFS 3.2.1 (3.2.1) <FF21DB1E-F425-1005-FB70-BC19CAF4006E> /System/Library/Frameworks/NetFS.framework/Versions/A/NetFS 
     0x7fff87b11000 -  0x7fff87b8ffff com.apple.CoreText 3.5.0 (???) <4D5C7932-293B-17FF-7309-B580BB1953EA> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreText.framework/Versions/A/CoreText 
     0x7fff87ba9000 -  0x7fff87bf8fef libTIFF.dylib ??? (???) <AE9DC484-1382-F7AD-FE25-C28082FCB5D9> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.dylib 
     0x7fff87bf9000 -  0x7fff87cb2fff libsqlite3.dylib 9.6.0 (compatibility 9.0.0) <2C5ED312-E646-9ADE-73A9-6199A2A43150> /usr/lib/libsqlite3.dylib 
     0x7fff87d3d000 -  0x7fff87d4eff7 libz.1.dylib 1.2.3 (compatibility 1.0.0) <FB5EE53A-0534-0FFA-B2ED-486609433717> /usr/lib/libz.1.dylib 
     0x7fff87ee8000 -  0x7fff88026fff com.apple.CoreData 102.1 (251) <32233D4D-00B7-CE14-C881-6BF19FD05A03> /System/Library/Frameworks/CoreData.framework/Versions/A/CoreData 
     0x7fff88027000 -  0x7fff88027ff7 com.apple.CoreServices 44 (44) <DC7400FB-851E-7B8A-5BF6-6F50094302FB> /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices 
     0x7fff88028000 -  0x7fff88057ff7 com.apple.quartzfilters 1.6.0 (1.6.0) <9CECB4FC-1CCF-B8A2-B935-5888B21CBEEF> /System/Library/Frameworks/Quartz.framework/Versions/A/Frameworks/QuartzFilters.framework/Versions/A/QuartzFilters 
     0x7fff88058000 -  0x7fff8806afe7 libsasl2.2.dylib 3.15.0 (compatibility 3.0.0) <76B83C8D-8EFE-4467-0F75-275648AFED97> /usr/lib/libsasl2.2.dylib 
     0x7fff880be000 -  0x7fff881e4fff com.apple.audio.toolbox.AudioToolbox 1.6.5 (1.6.5) <B51023BB-A5C9-3C65-268B-6B86B901BB2C> /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox 
     0x7fff881e5000 -  0x7fff881ebfff libCGXCoreImage.A.dylib 545.0.0 (compatibility 64.0.0) <4EE16374-A094-D542-5BC5-7E846D0CE56E> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/Versions/A/Resources/libCGXCoreImage.A.dylib 
     0x7fff881ec000 -  0x7fff881eefff libRadiance.dylib ??? (???) <76438F90-DD4B-9941-9367-F2DFDF927876> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/libRadiance.dylib 
     0x7fff881f5000 -  0x7fff881f5ff7 com.apple.Carbon 150 (152) <19B37B7B-1594-AD0A-7F14-FA2F85AD7241> /System/Library/Frameworks/Carbon.framework/Versions/A/Carbon 
     0x7fff881f6000 -  0x7fff88233ff7 libFontRegistry.dylib ??? (???) <8C69F685-3507-1B8F-51AD-6183D5E88979> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontRegistry.dylib 
     0x7fff88234000 -  0x7fff88237ff7 com.apple.securityhi 4.0 (36638) <38935851-09E4-DDAB-DB1D-30ADC39F7ED0> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SecurityHI.framework/Versions/A/SecurityHI 
     0x7fff88238000 -  0x7fff883a7fe7 com.apple.QTKit 7.6.6 (1756) <250AB242-816D-9F5D-94FB-18BF2AE9AAE7> /System/Library/Frameworks/QTKit.framework/Versions/A/QTKit 
     0x7fff8845f000 -  0x7fff88569ff7 com.apple.MeshKitIO 1.1 (49.2) <F296E151-80AE-7764-B969-C2050DF26BFE> /System/Library/PrivateFrameworks/MeshKit.framework/Versions/A/Frameworks/MeshKitIO.framework/Versions/A/MeshKitIO 
     0x7fff8856a000 -  0x7fff8856eff7 libmathCommon.A.dylib 315.0.0 (compatibility 1.0.0) <95718673-FEEE-B6ED-B127-BCDBDB60D4E5> /usr/lib/system/libmathCommon.A.dylib 
     0x7fff885b3000 -  0x7fff885c4fff com.apple.DSObjCWrappers.Framework 10.6 (134) <3C08225D-517E-2822-6152-F6EB13A4ADF9> /System/Library/PrivateFrameworks/DSObjCWrappers.framework/Versions/A/DSObjCWrappers 
     0x7fff885c5000 -  0x7fff88690fe7 ColorSyncDeprecated.dylib 4.6.0 (compatibility 1.0.0) <3C223A94-EF14-28C5-844B-C25DFC87FB42> /System/Library/Frameworks/ApplicationServices.framework/Frameworks/ColorSync.framework/Versions/A/Resources/ColorSyncDeprecated.dylib 
     0x7fff88691000 -  0x7fff887b2fe7 libcrypto.0.9.8.dylib 0.9.8 (compatibility 0.9.8) <48AEAFE1-21F4-B3C8-4199-35AD5E8D0613> /usr/lib/libcrypto.0.9.8.dylib 
     0x7fff887b3000 -  0x7fff888cafef libxml2.2.dylib 10.3.0 (compatibility 10.0.0) <EE067D7E-15B3-F043-6FBD-10BA31FE76C7> /usr/lib/libxml2.2.dylib 
     0x7fff888cb000 -  0x7fff888d0fff libGIF.dylib ??? (???) <9A2723D8-61F9-6D65-D254-4F9273CDA54A> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/libGIF.dylib 
     0x7fff88c15000 -  0x7fff88c58ff7 libRIP.A.dylib 545.0.0 (compatibility 64.0.0) <7E30B5F6-99FD-C716-8670-5DD4B4BAED72> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/Versions/A/Resources/libRIP.A.dylib 
     0x7fff88c59000 -  0x7fff88ca2fef libGLU.dylib ??? (???) <EB4255DD-A9E5-FAD0-52A4-CCB4E792B86F> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.dylib 
     0x7fff88ca3000 -  0x7fff88ceffff libauto.dylib ??? (???) <F7221B46-DC4F-3153-CE61-7F52C8C293CF> /usr/lib/libauto.dylib 
     0x7fff88cf0000 -  0x7fff88d6dfef libstdc++.6.dylib 7.9.0 (compatibility 7.0.0) <35ECA411-2C08-FD7D-11B1-1B7A04921A5C> /usr/lib/libstdc++.6.dylib 
     0x7fff88d6e000 -  0x7fff88d82ff7 com.apple.speech.synthesis.framework 3.10.35 (3.10.35) <621B7415-A0B9-07A7-F313-36BEEDD7B132> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/SpeechSynthesis.framework/Versions/A/SpeechSynthesis 
     0x7fff88d83000 -  0x7fff88d84ff7 com.apple.TrustEvaluationAgent 1.1 (1) <74800EE8-C14C-18C9-C208-20BBDB982D40> /System/Library/PrivateFrameworks/TrustEvaluationAgent.framework/Versions/A/TrustEvaluationAgent 
     0x7fff88d85000 -  0x7fff88df1ff7 com.apple.CorePDF 1.3 (1.3) <6770FFB0-DEA0-61E0-3520-4B95CCF5D1CF> /System/Library/PrivateFrameworks/CorePDF.framework/Versions/A/CorePDF 
     0x7fff88e6f000 -  0x7fff88e76fff com.apple.OpenDirectory 10.6 (10.6) <4200CFB0-DBA1-62B8-7C7C-91446D89551F> /System/Library/Frameworks/OpenDirectory.framework/Versions/A/OpenDirectory 
     0x7fff88e77000 -  0x7fff890b2fef com.apple.imageKit 2.0.3 (1.0) <5D18C246-303A-6580-9DC9-79BE79467C95> /System/Library/Frameworks/Quartz.framework/Versions/A/Frameworks/ImageKit.framework/Versions/A/ImageKit 
     0x7fff890b3000 -  0x7fff890b3ff7 com.apple.Accelerate.vecLib 3.6 (vecLib 3.6) <DA9BFF01-40DF-EBD5-ABB7-787DAF2D77CF> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/vecLib 
     0x7fff890b4000 -  0x7fff890fbfff com.apple.QuickLookFramework 2.3 (327.6) <11DFB135-24A6-C0BC-5B97-ECE352A4B488> /System/Library/Frameworks/QuickLook.framework/Versions/A/QuickLook 
     0x7fff890fc000 -  0x7fff89127ff7 libxslt.1.dylib 3.24.0 (compatibility 3.0.0) <87A0B228-B24A-C426-C3FB-B40D7258DD49> /usr/lib/libxslt.1.dylib 
     0x7fffffe00000 -  0x7fffffe01fff libSystem.B.dylib ??? (???) <71E6D4C9-F945-6EC2-998C-D61AD590DAB6> /usr/lib/libSystem.B.dylib 

    Model: Macmini2,1, BootROM MM21.009A.B00, 2 processors, Intel Core 2 Duo, 2 GHz, 2 GB, SMC 1.19f0 
    Graphics: Intel GMA 950, GMA 950, Built-In, spdisplays_integrated_vram 
    Memory Module: global_name 
    AirPort: spairport_wireless_card_type_airport_extreme (0x168C, 0x86), Atheros 5424: 2.1.14.5 
    Bluetooth: Version 2.3.8f7, 2 service, 19 devices, 1 incoming serial ports 
    Network Service: Ethernet, Ethernet, en0 
    Serial ATA Device: Hitachi HTS541612J9SA00, 111.79 GB 
    Parallel ATA Device: PIONEER DVD-RW DVR-K06 
    USB Device: A4 TECH USB2.0 PC Camera J, 0x0ac8 (Vimicro Corporation), 0xc40a, 0xfd600000 
    USB Device: 2.4Ghz wireless combo sets, 0x04fc (SUNPLUS TECHNOLOGY CO., LTD.), 0x05d8, 0x1d100000 
    USB Device: Bluetooth USB Host Controller, 0x05ac (Apple Inc.), 0x8205, 0x7d100000 
    USB Device: IR Receiver, 0x05ac (Apple Inc.), 0x8240, 0x7d200000 
+0

這是一個** **一個btw – OneOfOne 2010-12-13 20:43:27

+0

看看這個錯誤看起來像是在ImageMagick內部崩潰而不是實際的processImage。 – OneOfOne 2010-12-13 20:44:54

回答

4

您可以創建一個處理函數並使用Qt4的QtConcurrent::mapQtConcurrent::run。 另請檢查QFuture

實施例:

void processImage(QFileInfo & f) { 
    Image image; 
    image.read(qPrintable(f.absoluteFilePath())); 

    try { 
     //Apply effects effects 
     image.addNoise(GaussianNoise); 
     image.magick("png"); 
     image.rotate(90); 
     image.write("//users//files//"); 
    } catch (Magick::Exception & error) { 
     // Displaying any possible errors on the text browser 
     ui->textBrowser_error->setText(error.what()); 

    } 
} 

void processAll() { 
    const QList<QFileInfo> files = getFilesList(); 
    QFuture<void> future = QtConcurrent::map(files, processImage); 
    //do something with future 
} 

編輯::更改一個QFile到QFileInfo。

0

我不知道它如何與Qt一起工作,但在Windows(WINAPI)上,當該窗口的消息隊列在一段時間內未被回答時,用戶界面停止響應。下面是完整這樣一個循環:

LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) 
{ 
    // if you don't handle this "fast" enough, windows "whites" you out 
    switch (msg) 
    { 
    case WM_COMMAND: 
     // ... 
     break; 
    case WM_DESTROY: 
     PostQuitMessage(0); 
     break; 
    } 

    return DefWindowProc(hWnd, msg, wParam, lParam); 
} 

出現這種情況,如果你正在做一些繁重的處理這些消息之一。當Windows窗口變成白色或灰色或其他時,會發生這種情況。

我從來沒有在Linux上使用GUI(我傾向於寫cli的東西),但我想它是一樣的原則。

你基本上想打破一個新的線程。但是,如何你這樣做是有趣的部分。

如果您的應用僅限Linux,你可以使用並行線程,或者你可以這樣做:

pid_t result = fork() 
if (result == 0) 
{ 
    // child 
} 
elseif (result > 0) 
{ 
    // parent, result = child process id. 
} 
else 
{ 
    // error. result == -1. 
} 

據我瞭解,有一個線程和Linux上的進程之間幾乎沒有成本差異。

但是,一些GUI框架提供了他們自己的線程包裝器,我相信(wxWidgets浮現在腦海中)是出於便攜性原因。如果你正在尋找一個跨平臺的解決方案,你可能會想這樣做。我不知道Qt是否提供這樣的選擇。但是,在別人說出來之前,Boost可能會這樣做。

相關問題