프로세스간 c++ 객체 공유 방법문의드립니다.

park3250의 이미지

안녕하세요
프로세스 간 객체를 공유하고 싶은데요

protobuf 방법으 찾아봤는데
지금 공유하려는 객체가 단순 데이터가 아닌
스레드도 구동중이고 데이터도 담고있는 힙에 할단된 객체인데요

객체안에 컨테이너나, 동적으로 할단된게 있으면
protobuf로 직렬화를 해도 공유할수 없다고 하는데요

이를 공유할 수 있는 방법이 있을까요?

skyjjogari의 이미지

객체안에 컨테이너나, 동적으로 할단된게 있으면
protobuf로 직렬화를 해도 공유할수 없다고 하는데요

....없어요

park3250의 이미지

말씀하신데로 공유할 수 있는 방법이 없는거 같네요ㅜ

twinwings의 이미지

방법의 좋고 나쁘고를 떠나서 가장 쉬운 방법은 DB를 이용하는 것 같네요.

더구나 DB만 정해지면 표준 인터페이스도 정해지고, 이식도 매우 쉬워지겠죠.

외부 의존성없이 직접 구현하시려면 IPC 특히 공유 메모리 쪽 보시면 도움 될 것 같네요.

http://www.joinc.co.kr/w/Site/system_programing/IPC/SharedMemory

park3250의 이미지

객체 안에 컨테이너랑, 스레드등이 있어서 DB도 안될거같네요..

Necromancer의 이미지

같은 머신이라면 두 프로세스간에 공유메모리 만들고 그안에 생성하면 됩니다.
여기에 더해서 두 프로세스의 객체 멤버 메소드들이 같아야 합니다.

보통 C++로 컴파일된 프로그램들은 멤버변수들의 구조체만을 C++ 객체 데이터로 넣어두고 멤버 메소드들은 멤버변수 구조체를 인수로 받는 함수 형태로 프로그램 코드에 들어가 있습니다.

다른 머신이라면 뭐 해도 안됩니다. 객체를 직렬화에서 소켓으로 쏘고 받아 복원하기를 반복해서 공유할수 있지만 이건 공유가 아니라 복사고, 멤버 변수들이 수정될때마다 이걸 하기에는 너무 낭비가 큽니다. 필요한 데이터만 그때그때 주고받는게 나을겁니다.

Written By the Black Knight of Destruction

park3250의 이미지

객체안에 컨테이너랑, 스레드등이 있어서 공유가 불가능하네요..

twinwings의 이미지

그렇게 엄청 복잡하고 큰 객체일 경우

프록시 객체(디자인패턴, 프록시 패턴) 혹은 RPC(Remote Procedure Call)로 구현하면 됩니다.

RPC 관련 라이브러리로는 Dbus가 있습니다.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.