<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Is my plugin restricted by the computing resources of Revit? in Revit API Forum</title>
    <link>https://forums.autodesk.com/t5/revit-api-forum/is-my-plugin-restricted-by-the-computing-resources-of-revit/m-p/12155865#M10419</link>
    <description>&lt;P&gt;According to my personal understanding, the limitation of running tasks on a single thread is not due to hardware restrictions but rather a deliberate design choice aimed at ensuring data consistency.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;To clarify, the term "single-threaded" does not necessarily mean it all operates on a single core; it depends on the nature of the data your application handles during different phases.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;When we refer to "single-threaded," we are likely talking about the "event loop" utilized by Revit to manage model modifications. The event loop is a common design pattern used in UI applications. However, internally, Revit can utilize multi-core or GPU cores to parallelize rendering processes and generate model data into images.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;In the majority of cases, achieving parallel execution of tasks requires a careful design to split jobs into multiple individual sub-jobs. This can be quite challenging for most real-world scenarios.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;For many UI applications, opting for a single-threaded approach offers greater stability and simplicity in maintaining data consistency. This holds particularly true for Revit, which is a software equipped with a third-party plugin system. In Revit, all operations related to reading and updating the model are queued and executed sequentially on the main thread, a decision rooted in Revit's specific business domain.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;While it is possible to design Revit to support multi-threading, similar to a database software, doing so would entail sacrificing simplicity and introduce complexities related to handling thread-safety during modifications.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Moreover, it's important to note that even for writing data in parallel, a database relies on locking mechanisms to ensure data consistency, effectively making it single-threaded at its core. This approach is based on the widely accepted understanding that modifying related data must be regulated to guarantee data consistency.&lt;/P&gt;</description>
    <pubDate>Tue, 08 Aug 2023 04:33:14 GMT</pubDate>
    <dc:creator>Kennan.Chen</dc:creator>
    <dc:date>2023-08-08T04:33:14Z</dc:date>
    <item>
      <title>Is my plugin restricted by the computing resources of Revit?</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/is-my-plugin-restricted-by-the-computing-resources-of-revit/m-p/12146382#M10415</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;Revit is a single-threaded (therefore single-core) process. I was wondering if a Revit plugin would then have to live with the same restriction or whether a plugin could theoretically run multi-threaded/multi-processed? And what about GPU access? I know that some commercial plugin providers have developed standalone software with bidirectional connections to and from Revit, and I was wondering whether the hardware restrictions of Revit were the reason behind that.&lt;/P&gt;</description>
      <pubDate>Thu, 03 Aug 2023 11:42:05 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/is-my-plugin-restricted-by-the-computing-resources-of-revit/m-p/12146382#M10415</guid>
      <dc:creator>grubdex</dc:creator>
      <dc:date>2023-08-03T11:42:05Z</dc:date>
    </item>
    <item>
      <title>Re: Is my plugin restricted by the computing resources of Revit?</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/is-my-plugin-restricted-by-the-computing-resources-of-revit/m-p/12146465#M10416</link>
      <description>&lt;P&gt;Your add-in is not restricted in any way. The only restriction imposed by Revit is the single-threaded implementation of the Revit API and access to Revit functionality. All other operations performed by your add-in are not restricted., limited or influenced by Revit in any way whatsoever. The next limiting factor might be the .NET environment in which your add-in lives, and the AppDomain that Revit provides for it. However, you also can always implement whatever functionality you like outside of your Revit add-in and communicate between that and the add-in in a number of ways.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 03 Aug 2023 12:18:18 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/is-my-plugin-restricted-by-the-computing-resources-of-revit/m-p/12146465#M10416</guid>
      <dc:creator>jeremy_tammik</dc:creator>
      <dc:date>2023-08-03T12:18:18Z</dc:date>
    </item>
    <item>
      <title>Re: Is my plugin restricted by the computing resources of Revit?</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/is-my-plugin-restricted-by-the-computing-resources-of-revit/m-p/12146498#M10417</link>
      <description>&lt;P&gt;Hi Jeremy, thanks for the quick reply. Could you elabore a bit more on the following aspect of your answer?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;BLOCKQUOTE&gt;The next limiting factor might be the .NET environment in which your add-in lives, and the AppDomain that Revit provides for it.&lt;/BLOCKQUOTE&gt;&lt;P&gt;What does that mean in practice?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Getting data out of Revit and back in of course also means more overhead in terms of what needs to be built. Is there some kind of advice / best practices you can give here on when it's feasible to go that route?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks in advance,&lt;/P&gt;&lt;P&gt;grubdex&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 03 Aug 2023 12:30:22 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/is-my-plugin-restricted-by-the-computing-resources-of-revit/m-p/12146498#M10417</guid>
      <dc:creator>grubdex</dc:creator>
      <dc:date>2023-08-03T12:30:22Z</dc:date>
    </item>
    <item>
      <title>Re: Is my plugin restricted by the computing resources of Revit?</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/is-my-plugin-restricted-by-the-computing-resources-of-revit/m-p/12146542#M10418</link>
      <description>&lt;P&gt;My pleasure, Thank you for your appreciation.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;gt; What does that mean in practice?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;No idea. I prefer theory. Sorry, studied math. You could examine the official .NET documentation and check what they say.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;gt; Getting data out of Revit and back in of course also means more overhead in terms of what needs to be built. Is there some kind of advice / best practices you can give here on when it's feasible to go that route?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I don't understand your question. Please clarify what you want to achieve.&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 03 Aug 2023 12:46:22 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/is-my-plugin-restricted-by-the-computing-resources-of-revit/m-p/12146542#M10418</guid>
      <dc:creator>jeremy_tammik</dc:creator>
      <dc:date>2023-08-03T12:46:22Z</dc:date>
    </item>
    <item>
      <title>Re: Is my plugin restricted by the computing resources of Revit?</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/is-my-plugin-restricted-by-the-computing-resources-of-revit/m-p/12155865#M10419</link>
      <description>&lt;P&gt;According to my personal understanding, the limitation of running tasks on a single thread is not due to hardware restrictions but rather a deliberate design choice aimed at ensuring data consistency.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;To clarify, the term "single-threaded" does not necessarily mean it all operates on a single core; it depends on the nature of the data your application handles during different phases.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;When we refer to "single-threaded," we are likely talking about the "event loop" utilized by Revit to manage model modifications. The event loop is a common design pattern used in UI applications. However, internally, Revit can utilize multi-core or GPU cores to parallelize rendering processes and generate model data into images.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;In the majority of cases, achieving parallel execution of tasks requires a careful design to split jobs into multiple individual sub-jobs. This can be quite challenging for most real-world scenarios.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;For many UI applications, opting for a single-threaded approach offers greater stability and simplicity in maintaining data consistency. This holds particularly true for Revit, which is a software equipped with a third-party plugin system. In Revit, all operations related to reading and updating the model are queued and executed sequentially on the main thread, a decision rooted in Revit's specific business domain.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;While it is possible to design Revit to support multi-threading, similar to a database software, doing so would entail sacrificing simplicity and introduce complexities related to handling thread-safety during modifications.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Moreover, it's important to note that even for writing data in parallel, a database relies on locking mechanisms to ensure data consistency, effectively making it single-threaded at its core. This approach is based on the widely accepted understanding that modifying related data must be regulated to guarantee data consistency.&lt;/P&gt;</description>
      <pubDate>Tue, 08 Aug 2023 04:33:14 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/is-my-plugin-restricted-by-the-computing-resources-of-revit/m-p/12155865#M10419</guid>
      <dc:creator>Kennan.Chen</dc:creator>
      <dc:date>2023-08-08T04:33:14Z</dc:date>
    </item>
    <item>
      <title>Re: Is my plugin restricted by the computing resources of Revit?</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/is-my-plugin-restricted-by-the-computing-resources-of-revit/m-p/12212325#M10420</link>
      <description>&lt;P&gt;Thank you, Kennan, for the clarification! Added to the blog:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://thebuildingcoder.typepad.com/blog/2023/09/add-in-threads-and-geometry-comparison.html#2" target="_blank"&gt;https://thebuildingcoder.typepad.com/blog/2023/09/add-in-threads-and-geometry-comparison.html#2&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 01 Sep 2023 15:07:39 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/is-my-plugin-restricted-by-the-computing-resources-of-revit/m-p/12212325#M10420</guid>
      <dc:creator>jeremy_tammik</dc:creator>
      <dc:date>2023-09-01T15:07:39Z</dc:date>
    </item>
  </channel>
</rss>

