[완료]ACE + Qt 조합의 APP 구현 쓰레드는 어떤 걸 써야 할까

jeongheumjo의 이미지

다름이 아니라 제가 지금 ACE + Qt 로 App 하나를 구현해보려 스터디 중입니다.
ACE 는 네트워크 구현에 Qt 는 GUI 구현에 사용하려고 생각하고요..

그런데 쓰레드 및 IPC 관련해서는 ACE, Qt 모두 기능이 지원되는 것 같은데요,(실상 ACE 의 모든 기능이 Qt에서 지원되는 듯...)

저는 Qt 는 GUI 구현하는데만 사용하려 했었는데요, 그렇다면 쓰레드 구현도 ACE 로 하는게 낫겠죠?

아직 두 라이브러리를 처음 스터디 중이라 잘 모르는게 많습니다.

알려주실 분들께 미리 감사드립니다..

익명 사용자의 이미지

Quote:
(실상 ACE 의 모든 기능이 Qt에서 지원되는 듯...)

ACE는 그냥 다중 플랫폼을 지원하기 위한 단순 API wrapper가 아닙니다.

ACE는 Iterator, Reactor, Proactor pattern의 구현이 핵심 파트입니다.
또한, 쓰레드 풀이나, 서비스 wrapper, 기타 등등 같은 여러가지 디자인 패턴이 ACE가 존재하는 이유입니다.
Pattern-oriented software architecture vol.2 에 설명되어 있는, reliable, scalable, concurrent service를 구축 할 때,
접하는 디자인/구현 문제들과 여러 해결 패턴/방식들을 읽어보세요.

ACE의 모든 기능이 Qt에서 지원된다고 생각하신다면, 이미 ACE를 공부하시는 방향이 잘못된것 입니다.

그냥 많은 OS에서 편하게 쓸수 있는 Thread, IPC, network I/O wrapper class를 찾으신다면
ACE도 좋은 선택중 하나지만, 많은 라이브러리들이 이미 제공을 합니다.
굳이 ACE를 사용할 이유가 없습니다. 차라리 boost를 사용하세요.

jeongheumjo의 이미지

저는 간신히 헤드퍼스트 디자인패턴 정도만 이해하고 있는데 POSA2 는 공부해보고싶은 욕심도 생기기도 하면서도 한편, 겁도 나고 그렇습니다. GoF 에 POSA2 정도를 공부했다면 패턴에 대해서는 누구와도 얘기할 만큼 충분히 공부한 것일까요?
ACE를 쓰시는 분들이 많으신가요? 혹시 C++ 하는 사람들은 반드시 공부하는 필수 아이템인가요?
ACE를 처음 공부 시작했는데 궁금한게 참 많네요.. 제가.

아 그리고 이 얘기 해보고 싶었습니다. C++ Network Programming 책 번역이 너무 실망이라는 거요.
하지만 ACE Programming Guide 는 그나마 좀 읽기가 편하더군요.. C++NP 는 읽기가 너무 어려운 1인 입니다.

답변 감사드립니다.

익명 사용자의 이미지

ACE를 직접 쓰는 사람이 많은지 적은지를 떠나서, 많은 사람들에게 영향을 준것만큼은 확실합니다.
이미 많은 프레임워크 서비스들이
Reactor/Proactor pattern 을 구현하고 있고요, 하다못해
널리쓰이는

Boost ASIO도 단지 Proactor 패턴을 구현 한 것입니다.
http://www.boost.org/doc/libs/1_46_1/doc/html/boost_asio/overview/core/async.html

사실 ACE는 POSA2에서 설명하는 패턴을 POSA2 저자가 직접 실제로 구현한 프로젝트입니다.
많은 network framework들이 그 패턴들을 구현하고 있듯이,

ACE를 직접 쓰는 사람이 적더라도, 적어도 많은 영향을 끼친것 틀림없는것 같습니다. 아니, ACE가 아니라 POSA2라고 해야할런지도..

저도 개인적으로 C++NP책은 안좋아합니다.
내용이 나쁜것은 아닌데, 읽기 좋게, 잘 쓰여진 책은 아니라고 생각합니다.

jeongheumjo의 이미지

Reactor, Proactor, POSA2 무언지 잘 모르지만 점점 자극받고 있습니다. 꼭 공부해보고 싶어지네요..

winner의 이미지

아, 뭐... ACE Programming Guide가 나중에 번역되어서 번역품질이 좋을 수도 있겠습니다만...
제가 알기로는 ACE는 공부하는데에는 좋다고 하더군요. 쓰든 안 쓰든...

jeongheumjo의 이미지

네 같은 분이 번역하셨죠. 아마 APG를 쓰실때는 번역 경험이 더 많아져서 더 작업이 잘 된게 아닌가.. 짐작해봅니다.
C++NP를 번역할 때는 그 반대...TT

yielding의 이미지

꺼리가 안되는 질문은 아닌것 같고요. 그런 고민 많이 하죠.

저라면 ACE로 UI없이 완벽하게 (여러 플랫폼에서 동작하는) 프로그램을 테스트/구현한 후 나중에 Qt를 입혀볼것 같습니다.

그래서 UI 쓰레드는 Qt로 I/O 쓰레드는 ACE로.

Life rushes on, we are distracted

jeongheumjo의 이미지

네 저도 그렇게 일단 생각하고 있습니다.
답변 감사합니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.